2011年11月19日 星期六

PHP Reflection Class

PHP 從 5.3 開始,支援了 Reflection 的功能,而這個 Reflection 基本上是從 Java 的 Reflection API 而來。( 基本上 PHP 什麼都想抄 Java )

透過 Reflection API ,可以在執行期間取得該 Object method 的檔案名稱、方法參數、名稱、屬性、類別名稱、父類別、介面等,而不需要透過骯髒的方式來剖析 PHP 程式碼。

這方面只能取得物件的基本資訊,沒有辦法在執行時期去對物件的類別或超類別做修改。

而雖然也有人實作了 RunKit extension 來實現執行期間的物件、函數修改, 但也未包含在 PHP Core Extension 內,有相當久的時間沒有維護更新 (最後一次是 2006 年),很多功能也都是 Experimental,而且要透過 PECL 來編譯 PHP5.3 的 RunKit 是無法的,直接爛掉。

而另外一個 ClassKit extension 也是胎死腹中。

結論

PHP 爛到爆