PHPの動向を把握しよう ~PHP5.4、5.5で追加された新機能まとめ~

By tanaka - 13/01/03 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

PHP5のマイナーバージョンシェアを見ると、PHP5を利用したサイトの52%が5.2、43%が5.3を使っているということです。自分の実感としてもそのぐらいのシェアではないかと思います。

PHP5の最新バージョンとして5.5が出ていますが、5.4や5.5への移行は進まずにバージョン6への移行が進むのではないかと思われます。それまでに、5.4、5.5の新機能を理解しておきたいと思います。

目次

5.4の新機能

5.5の新機能

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 =&gt; $gene) {
    echo $gene.&quot;\n&quot;;
}

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 &quot;\n&quot;;

echo 'String dereferencing: ';
echo 'PHP'[0];
echo &quot;\n&quot;;

出力は以下のようになります。
Array dereferencing: 1
String dereferencing: P

boolvalメソッドの追加

変数をbool型で判定した結果を返します。intval、strval等のbool版です。

参考記事

php5.5で追加された機能を触ってみる #phpadvent2012

PHP5.4の新機能、「trait」を知る!(PHP Advent Calendar jp 2011Day15)

PHP5.4 alpha1リリース! PHP5.3からの新機能を見わたす