php5.4から使える[]での配列初期化と、array()との速度比較

こんにちは。 PHP5.4から、[]による配列の初期化ができるようになりました。

最近の言語やC言語ですら使える[]構文が今までPHPでは使用できませんでした。
従来、PHPで配列を生成するにはarray()という関数を使用しなければなりませんでした。

[]が使えるようになったので疑問に思ったのですが、array()関数です。

関数であれば多少なり呼び出しのオーバーヘッドがあるはず。
そのオーバーヘッドを考慮したらarray()で配列を初期化するより[]と書いたほうが高速なのでは?

という疑問が出たので検証します。

Continue Reading…

phpのマジックメソッドを使ってRailsのfind_all_by_*メソッドを実装してみる

phpのマジックメソッドを使ってRailsのfind_all_by_*メソッドを実装してみる

久々の更新です。
ネタは溜まっているんですがなかなか書くモチベが沸かず。

これから定期的に更新できるよう頑張ります。

今日はPHPのマジックメソッドについて書きます。

PHPのマジックメソッドの中に__callStaticというメソッドがあります。
これは、クラスで定義されていないメソッドに対してstaticなコールをした際に呼び出されるフックです。

この機能を使えば、Rubyでいうところのmethod missingのような挙動が可能になるのでは?
と考え、実験にRuby on Railsで以前まで使われていたfind_all_by_*を実装してみたいと思います。

ライブラリ等に依存しないシンプルなデモと、
実用化するために、FuelPHPのモデルを用いた例も作成します。 Continue Reading…