福岡拠点の永嵜です。
前回に引き続き、PHP7.0以降に追加された機能を紹介します。
1.define() を用いた配列定数の定義
define() で配列の定数を定義できるようになりました。
サンプルプログラム
echoでANIMALSの要素1を出力しています。
1 2 3 4 5 6 7 |
define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // "cat" と出力します |
2.use 宣言のグループ化
複数のクラスや関数そして定数を同じ namespace からインポートする際に、
単一の use 文にまとめられるようになりました。
サンプルプログラム
1 2 3 4 5 6 7 |
// 以前のバージョンのコード use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; // PHP 7 以降のコード use some\namespace\{ClassA, ClassB, ClassC as C}; |
3.例外処理における複数の例外の catch
ひとつの catch ブロックで複数の例外を扱えるようになりました。
パイプ文字 (|) を使って指定します。
異なる例外を同じように処理したい場合に有用です。
サンプルプログラム
1 2 3 4 5 |
try { // 何かのコード } catch (FirstException | SecondException $e) { // FirstException と SecondException をこのブロックで処理します } |
4.list() におけるキーのサポート
list() (あるいはその短縮版である [] 構文) の内部でキーを
指定できるようになりました。
list()及び[]で変数の中身を受け取る時もキーを指定した書き方が
出来るようになりました。
サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$data = [ ["id" => 1, "name" => 'Tom'], ["id" => 2, "name" => 'Fred'], ]; // list() 形式 foreach ($data as list("id" => $id, "name" => $name)) { print "結果1 "."id: " .$id." name:".$name ."\n" ; } foreach ($data as list("name" => $name,"id" => $id )) { print "結果2 "."id: " .$id." name:".$name ."\n" ; } // [] 形式 foreach ($data as ["id" => $id, "name" => $name]) { print "結果3 "."id: " .$id." name:".$name ."\n" ; } foreach ($data as ["name" => $name,"id" => $id ]) { print "結果4 "."id: " .$id." name:".$name ."\n" ; } function getList(){ $test = [ ["id" => 1,"name" => "田中"] ]; return $test[0]; } list("name" => $name,"id" => $id) = getList(); print "結果5 "."id: " .$id." name:".$name ."\n" ; |
実行結果
1 2 3 4 5 6 7 8 |
結果1 id: 2 name:Fred 結果2 id: 1 name:Tom 結果2 id: 2 name:Fred 結果3 id: 1 name:Tom 結果3 id: 2 name:Fred 結果4 id: 1 name:Tom 結果4 id: 2 name:Fred 結果5 id: 1 name:田中 |
5.最後に
PHP7.0以降に多くの機能が機能が追加されています。
今回紹介した機能以外にも便利な機能が追加されていますので
詳細を知りたい方は下記をチェックしてみてください。
PHP マニュアル
http://php.net/manual/ja/migration70.new-features.php
http://php.net/manual/ja/migration71.new-features.php
http://php.net/manual/ja/migration72.new-features.php