Slide 1

Slide 1 text

PHP8.xの新機能を使って より良いコードを書こう! 山藤駿亮 Qiita: @SanQ Twitter: @SAshunchan

Slide 2

Slide 2 text

PHPは7→8へ このLTではPHP8.0からの新機能を紹介

Slide 3

Slide 3 text

今回紹介する新機能 • コンストラクタ • 名前付き引数 • Match式

Slide 4

Slide 4 text

コンストラクタ(8.0~) <機能> • プロパティのアクセス権を引数内で 設定できる • プロパティへの代入をコンストラクタ の引数内で行える → コンストラクタにかける記述量が減少

Slide 5

Slide 5 text

例:string(10) "hello! PHP" を出力 PHP 7.4

Slide 6

Slide 6 text

例:string(10) "hello! PHP" を出力 PHP 8.0

Slide 7

Slide 7 text

名前付き引数 (8.0~) <機能> • メソッドの引数に名前を付けられる • メソッドの引数の順序を守らなくても良い • デフォルトの値がある引数は実行時に 値を入れる必要がない → 使用される引数の内容がより分かりや すい

Slide 8

Slide 8 text

例:全ての引数を合計した結果を出力 PHP 7.4 PHP 8.0

Slide 9

Slide 9 text

名前付き引数の注意点 名前付き引数を使用した場合、その後の 引数も名前付き引数を使用しなくてはな らない 上の結果 Error: Cannot use positional argument after named argument

Slide 10

Slide 10 text

Match式 (8.0~) <機能> • 条件分岐を文ではなく式として処理する • 条件部分に条件外の値が来た場合エ ラーを吐く • 値の比較は厳密な比較 → 少ない記述かつ厳密な比較で条件分 岐を実装可能になった

Slide 11

Slide 11 text

例:$numberの値によって$resultの値を変更 PHP 7.4 PHP 8.0

Slide 12

Slide 12 text

Match式の注意点 • switchは緩やかな比較である一方で Match式は厳密な比較。※ • match式内部で式の実行はできない → switchからmatch式に書き換える際は 注意が必要 ※引数にtrueを入れることでmatch式でも緩やかな比較が可能

Slide 13

Slide 13 text

最後に… • より柔軟な型の定義やコードの短縮が 可能に! • パフォーマンスが向上! 一部の仕様が変更しているためバージョ ンアップの際は公式のドキュメントを参照 することが重要

Slide 14

Slide 14 text

参考資料 PHP Supported Versions (https://www.php.net/supported-versions.php) PHP8 released(https://www.php.net/releases/8.0/ja.php) PHP match() (https://www.php.net/manual/ja/control- structures.match.php) Qiita @rana_kualu 【PHP8.0】PHP8.0の新機能 (https://qiita.com/rana_kualu/items/a6601b49e0591eb42200) PHP 7.4.x から PHP 8.0.x への移行(https://www.php.net/migration80)

Slide 15

Slide 15 text

ご清聴ありがとうございました! 今日の内容の詳細や追加 情報を記事にしています! (右のQRまたは https://qiita.com/SanQ/ite ms/f8453d6a7cbac6852312)