PHP5.4のパーサとコンパイラをいじって拡張メソッドの文法を追加してみたという話。PHP内部のコンパイラとパーサの勉強がてらつくってみた。 拡張メソッドって何? クラスの外部からそのクラスのメソッドを追加できる機能で、「あーこのクラスにこういうメソッドがあったらな〜」という欲望を満たす。C#とかについてる。 例えば、こんな感じのクラスがあったとする。 <?php class Hoge { function __construct() { $this->hoge = "hogehoge"; } } んで、このHogeクラスに対して、こんな感じでメソッドを追加できる。 <?php public function Hoge::fuga() { echo $this->hoge; } (new Hoge)->fuga(); // "hogehoge"が出力される staticなメソッドも当然追加