「Dynamic Static Calls」@PHP 5.3
Introduction of PHP 5.3 という記事があり、PDFでスライドが作られていましたので、流し読みしてみました。
まぁまぁ、知っていたことも多数、知らなかったことも多数。
その中でちょっと笑ったのが、Dynamic Static Callというもの。スライドでいう14枚目です。
おいおい動的なんだか静的なんだかハッキリしろよ、と思うこの新機能ですが、まぁ動的な静的メソッド呼び出しのことです。
で、動的にメソッドを呼び出すことができるのは知っていたのですが、たしかに、静的コールを動的にしたことがなかったので気づきませんでしたが、できないんですね。
ちょっと検証コードとか。PHP5.2.5です。
動的なメソッドコール
<?php class A { function B() { echo 1; } } $b = "B"; $inst = new A; $inst->$b();
当然こちらの実行結果は
1
です。
動的な静的メソッドコール
<?php class A { static function B() { echo 1; } } $b = "B"; $inst = "A"; $inst::$b();
パースエラーです、と怒られます。
PHP Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in Command line code on line 12
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in Command line code on line 12
初めてみたぞこんなエラー。なんて読むのかわからん。と、思ってググったら、msakamoto-sfさんの記事がヒット。ヘブライ語なのか・・・しかし依然読み方はわからずw
要するに、PHP5.3ではこれができるようになる、まあそういうことです。