PHP5.3の新機能『遅延静的束縛』について勉強してみる

勉強会シリーズ第3回目、これで新機能の勉強はほぼ終わりの予定です。
と言っても他にも追加されたものはたくさんあるんですけどね、gotoとかgotoとか・・・

遅延静的束縛

PHP 5.3.0 以降、PHP に遅延静的束縛と呼ばれる機能が搭載されます。 これを使用すると、静的継承のコンテキストで呼び出し元のクラスを参照できるようになります。

この “遅延静的束縛” という機能名は、内部動作を考慮してつけられたものです。 “遅延束縛 (Late binding)” の由来は、メソッドを定義しているクラス名を使用しても static:: の解決ができなくなったことによります。 その代わりに、実行時情報をもとに解決するようになります。 “静的束縛 (static binding)” の由来は、 静的メソッドのコールに使用できることによります (ただし、静的メソッド以外でも使用可能です)。

PHP5.2まで

~~~
遅延静的束縛の使用法

~~~

~~~

ふむ・・・・で?って感じですよね?

__callStatic() マジック・メソッド

動的な静的呼び出しが出来るようになる
~~~
1,
‘update’ => 2);

public static function __callStatic($method, $args) {
return isset(static::$_inc[$method])
? static::$_inc[$method] + $args[0] : $args[0];
}
}

class Bar extends Foo {
}

echo Foo::select(100); // => 101
echo Foo::update(100); // => 102
echo Foo::testxxx(100); // => 100

echo Bar::select(100); // => 101
~~~
へー、としか言いようがないけど、cakephpとlithiumの違いを見るとわかりやすいかもしれません

cakephpのfind

~~~
set(‘posts’, $this->Post->find(‘all’));
}
~~~

lithiumのfind

~~~

コメント

タイトルとURLをコピーしました