PHPのバージョン5.3から5.6までの新機能をおさらいする
レガシーなPHPコードを触っていると「あれ、このバージョンだとこの機能はまだ使えないのか?」みたいなことがたまにある。私がそれなりにPHPを使うようになったときの最新バージョンが5.6くらいで、それより前の機能はいつ追加されたものなのか曖昧にしか覚えていないからだ。
そこで今回はPHP5系の各バージョンでどんな機能が追加されていたのかをおさらいしてみようと思う。PHPのバージョンについては、世の中でそれなりに動いているバージョン5.3から5.61に焦点をあてる。また、今回は、全ての機能は紹介せず、大きな機能や個人的に気になった機能のみ簡単に書いていく。
基本的にこれから書く内容はPHPマニュアルにも載っている2ことなので、詳しく知りたい人はそちらを見ると良いだろう。
PHP 5.3
- 名前空間
- 遅延静的束縛
- ラムダ、無名関数(クロージャ)
- クロージャで親スコープの変数を使用する場合、
use
で渡す
- クロージャで親スコープの変数を使用する場合、
- マジックメソッドを2つ追加
__callStatic()
:アクセス不能メソッドを静的コンテキストで実行したとき__invoke()
:スクリプトがオブジェクトを関数としてコールしたとき
- 定数をクラスの外でも
const
を使って宣言できるようになる - 三項演算子の短縮記法
?:
- 静的なメソッドに動的にアクセスできるようになる
PHP 5.4
- トレイト
- 配列の短縮構文
[]
- 関数の戻り値を配列として使用できるようになる
func()[0];
- クロージャが
$this
をサポート - クラスのインスタンスを生成するときにそのメンバーにアクセスできるようになる
(new Cat())->nyaaaa();
Class::{expr}()
構文をサポート- ビルドインウェブサーバ
PHP 5.5
- ジェネレータ
- 例外処理で
finally
キーワードが使用できるようになる foreach
がlist()
に対応empty()
に任意の式を渡せるようになる- それまでは変数しか渡せなかった
- arrayリテラルとstringリテラルのデリファレンス
echo [1, 2, 3][0]; // 1
echo 'sushi'[0]; // s
PHP 5.6
- 定数式
- 配列も定義できるようになる
const ARR = [1, 2, 3];
- 配列も定義できるようになる
...
による可変個引数関数function func(...$params) {}
...
による引数のアンパック- 累乗演算子
**
echo 3 ** 2; // 9
use function
、use const
- マジックメソッド
__debugInfo()
:var_dump()
で出力するときの情報を変更できる
所感
マニュアルを流し読みしてざっと書いてみただけだが、結構学びがあった。よく知らなかった機能もあったので、それについては今度別で記事を書くかもしれない。PHPマニュアルをもっと読もうなという気持ちである。