PHP5のマイナーバージョンシェアを見ると、PHP5を利用したサイトの52%が5.2、43%が5.3を使っているということです。自分の実感としてもそのぐらいのシェアではないかと思います。
PHP5の最新バージョンとして5.5が出ていますが、5.4や5.5への移行は進まずにバージョン6への移行が進むのではないかと思われます。それまでに、5.4、5.5の新機能を理解しておきたいと思います。
目次
- trait
- 環境変数short_open_tags
- 環境変数asp_tags
- JsonSerializableインターフェースの追加
- SessionHandlerインターフェースの追加
- hex2binメソッドの追加
5.4の新機能
trait
クラスに似た概念としてtraitが追加されました。traitは単一継承の制約を逃れたクラス、メソッド集のような位置づけになります。
トレイトは、PHP のような単一継承言語でコードを再利用するための仕組みのひとつです。 トレイトは、単一継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある独立したクラスで再利用できるようにします。(PHP: トレイト – Manual)
trait A { function usefulMethod() { } } class B { function bmethod() { } } class C extends B { use A;// トレイトAの利用を宣言 function cfunc() { usefulMethod();// トレイトAのメソッドを利用 } }
環境変数short_open_tag
5.3までは環境変数short_open_tagをOffにすることで<?=出力変数 ?>や<? 実行コード ?>という書き方が無効にすることができました。
5.4以降ではショートオープンタグが常に有効になります。つまり無効にできなくなります。
環境変数asp_tags
環境変数asp_tagsを有効にすることで、<%=出力変数 %><% 実行コード %>という書き方ができるようになります。
JsonSerializableインターフェースの追加
JsonSerializableインターフェースを実装することで、json_encodeを呼んだ時の実装をカスタマイズできます。
SessionHandlerインターフェースの追加
SessionHandlerインターフェースを実装することで、セッションの生成、管理、削除までの挙動をカスタマイズできます。
hex2binメソッドの追加
16進エンコードされたバイナリ文字列をデコードし、バイナリ文字列に戻します。
5.5の新機能
パスワード関係の関数
アルゴリズムを指定してパスワードを生成するpassword_hashや、パスワードのアルゴリズム等情報を取得するpassword_get_info等の関数が追加されました。
ジェネレータの追加
yieldキーワードでジェネレータを作れるようになりました。配列を使うよりメモリを消費せずにループを回せます。
メモリ利用量の比較がされています。→PHP 5.5 でジェネレータが導入される
$genes = makeGene(); foreach ($genes as $k => $gene) { echo $gene."\n"; } function makeGene() { yield 1; yield 4; yield 12; yield 47; }
finallyキーワードの追加
try~catch節にfinallyを使えるようになりました。
emptyの引数
emptyの引数に式を入れられるようになりました。
empty(some_method());
arrayとstring式のデリファレンス
配列を[2,5,9]のように書けるようになります。また文字列に対して”文字列”[番号]で何番目の文字かを指定して直接アクセスできます。
echo 'Array dereferencing: '; echo [1, 2, 3][0]; echo "\n"; echo 'String dereferencing: '; echo 'PHP'[0]; echo "\n";
出力は以下のようになります。
Array dereferencing: 1
String dereferencing: P
boolvalメソッドの追加
変数をbool型で判定した結果を返します。intval、strval等のbool版です。
参考記事
php5.5で追加された機能を触ってみる #phpadvent2012