2010年3月10日水曜日

PHP5.2以前で静的遅延束縛もどき

PHP5.3から使える静的遅延束縛

静的遅延束縛は、簡単にざっくりと説明すると、__CLASS__を呼び出す時に、定義してるのクラスの名前が出るところが、static::__CLASS__書けば、継承してるクラスの名前を取れる感じです。が、ちゃんと理解したい人はググって下さい。この理解の仕方で留まるのは良くないと思うのでw(無責任)

static::__CLASS__はget_class($this)でも代用できる、問題は__METHOD__

結論から言うと、できません。もしやり方が分かってる方がいらっしゃれば教えて下さい(T_T)。当たり前じゃんと思うかもしれませんが、__FUNCTION__もだめでしたw 呼び出し元を特定できるといいんですが、PHP callerとかでぐぐったらデバッグ情報から取り出すってのは見つけたけど、なんかそれはちょっと...

URLDispatcherが規約に基づいてるので、そっちの方で$this->setCurrentMethod('メソッド名');で設定する感じでやりました。何がしたかったかと言うと、クラス&メソッド名からviewファイルのパスを得る処理です。静的遅延束縛が使えればstr_replace('::', '/', strtolower(static::__METHOD))で実装して、命名規約を作っちゃえば済む話になります。便利!

何言ってるか全然分からないという方は、いずれ公開されるであろうYZWのソースをお読み下さい。

PHP5.3は何気にいい

PHP5.3なんてPHP6への踏み台で微妙なバージョンでしょ〜なんてナメてました。でも違いますね。使いたい機能がある。名前空間、?:、静的遅延束縛などなど...

5.3をどんどん使って行きたい。

0 件のコメント: