Upgrade to Pro — share decks privately, control downloads, hide ads and more …

php8について

 php8について

社内勉強会での発表資料

HAYATO FUKUSHIMA

April 28, 2021
Tweet

More Decks by HAYATO FUKUSHIMA

Other Decks in Programming

Transcript

  1. PHP8の話
    2021 / 4 / 27 ふくしま

    View Slide

  2. 目次
    ✅ php8とは
    ✅ php8の特徴 / 代表的な導入項目
    ✅ デメリット(注意点)
    ✅ 周辺への影響
    ✅ まとめ

    View Slide

  3. 目次
    ✅ php8とは 👈
    ✅ php8の特徴 / 代表的な導入項目
    ✅ デメリット(注意点)
    ✅ 周辺への影響
    ✅ まとめ

    View Slide

  4. PHP8とは
    2020年、PHPは25周年
    「PHP 8」 は
    2020年11月26日にリリース

    View Slide

  5. 目次
    ✅ php8とは
    ✅ php8の特徴 / 代表的な導入項目 👈
    ✅ デメリット(注意点)
    ✅ 周辺への影響
    ✅ まとめ

    View Slide

  6. TOO MANY

    View Slide

  7. JIT(Just In Time Compiler)
    について
    JITコンパイラは
    - コンピュータのプログラムが実行される直前、
    - そのプログラムをマシンの
    CPUに応じた機械語に
    コンパイルをおこなう。
    PHP自体もスクリプト言語(都度実行されるたびに
    コンパイルが行われる)
    さらに実行直前にコンパイルされるということとは???
    【通常のPHP】
    PHPの仮想実行マシ「ZendVM」で実行可能なOPCode列に変換、
    ZendVM上で逐次実行。
    【JITコンパイラ】
    実行時によく利用されるコードの集まりを機械語に変換して直接CPUで実行。
    仮想マシンではなくCPUで機械語を直接実行できるため
    実行スピードを上げることができます。
    ※Software Design 2021年5月号より

    View Slide

  8. JITについて : どれくらい速いのか?
    https://www.php.net/releases/8.0/ja.phpより
    ←WEBアプリ

    View Slide

  9. より具体的な
    コードの書き方を
    ご紹介

    View Slide

  10. 例1)コンストラクタでのプロパティのプロモーション
    PHP7 PHP8
    https://www.php.net/releases/8.0/ja.php

    View Slide

  11. Match式(の前にswitch式)
    何が表示されるかしら?

    View Slide

  12. Match式
    PHP7 PHP8

    View Slide

  13. 目次
    ✅ php8とは
    ✅ php8の特徴 / 代表的な導入項目
    ✅ デメリット(注意点)👈
    ✅ 周辺への影響
    ✅ まとめ

    View Slide

  14. バージョンが変わる = 挙動もかわる

    View Slide

  15. 緩やかな比較の変更
    何が表示されるかしら?

    View Slide

  16. 緩やかな比較の変更
    イコールが2個は緩やかな比較。
    【PHP7まで】
    緩やかな比較の場合、型が異なる比較の場合
    「暗黙的に型の変換」が行われた後比較される。
    【PHP8】
    こうした挙動を改善するために数値と文字列比較に
    変更がされた。
    「暗黙的に型の変換」されるが挙動が変わる。
    ※イコール3個の厳密比較は変更なし。

    View Slide

  17. 目次
    ✅ php8とは
    ✅ php8の特徴 / 代表的な導入項目
    ✅ デメリット(注意点)
    ✅ 周辺への影響👈
    ✅ まとめ

    View Slide

  18. 周辺への影響
    フレームワーク
    Laravel
    LTSの
    6.19.0、8.3.0以降で対応済😊
    CakePHP
    3.x : 非対応🤢
    4.x : 対応済み😊
    CodeIgniter
    LTS3系:非対応🤢
    開発版4系 : 対応済😊
    CMS wordpress 現状は非推奨?※1
    ※1 https://column.prime-strategy.co.jp/archives/column_4242

    View Slide

  19. バージョンアップする際は?
    🔵 公式移行ガイド の 下位互換性のない変更点 を要チェック
    🔵 PHPCompatibility の利用

    View Slide

  20. 目次
    ✅ php8とは
    ✅ php8の特徴 / 代表的な導入項目
    ✅ デメリット(注意点)
    ✅ 周辺への影響
    ✅ まとめ👈

    View Slide

  21. まとめ
    ⭕ 短く記述できたり、速度が早くなったりと恩恵が沢山ある。
    ⭕ ただし以前のバージョンと挙動が異なることがあるので注意
    ⭕ フレームワークやCMSを利用する際は、そのサポート状況を把握す
    る。

    View Slide

  22. おわり

    View Slide

  23. 参考
    ・php8 rfc
    ・php8リリースのお知らせ(公式
    ・PHP 7.4.x から PHP 8.0.x への移行(公式)
    ・PHP 8 で Web 以外の世界の扉を叩く shinjiigarashi
    → JITについて、なぜ導入したのか?の考察。

    View Slide