2010-12-22 99 views
3

在爲php(5.3)編寫擴展時,我想訪問靜態方法上的zend_class_entry指針。PHP Zend Engine擴展和靜態方法

在非靜態方法,我可以使用getThis()宏觀和Z_OBJCE_P宏內是這樣的:

​​3210

現在的問題: 靜態方法getThis()宏觀回報null指針,所以我不能使用Z_OBJCE_P宏。

有沒有人有一個解決方案,我從一個靜態方法訪問zend_class_entry

回答

3

真的很有趣: 靜態方法,你可以訪問範圍類似這樣的

zend_class_entry* ce = 0L; 
if (EG(called_scope)) { 
    ce = EG(called_scope); 
} else if (!EG(scope)) { 
    ce = EG(scope); 
} 

的EG宏訪問了很多全球和上下文特定的變量,也呼叫範圍內,調用類的的靜態方法。

+0

請注意被調用的作用域與(調用)作用域不同,第一個與LSB有關,第二個可能是您想要的。 – Artefacto 2010-12-24 15:29:53