PHP5新增了一項新的功能:Reflection。這個功能使得phper可以reverse-engineer class, interface,function,method and extension。透過PHP程式碼,就可以得到某object的所有訊息,並且可以和它互動。
PHP的反射API,即在PHP運行狀態下,透過分析PHP程序,可以導出物件所屬的類,方法,屬性,參數等資訊。
如何使用反射API
範例程式碼Person.php
#Person類,包含一個成員變數和三個成員方法
取得$student物件的方法和屬性清單
#ReflectionClass類別報告了一個類別的資訊
輸出結果為:name say __set __get
也可以用class函數,取得物件屬性的關聯數組的資訊
透過class()函數取得類別的資訊
列印結果:
#透過這個反射API,可以做hook實作外掛功能,動態代理等。
網路上找的動態代理範例
更多PHP的反射API相關文章請追蹤PHP中文網!