3

php(5.3)の拡張機能を作成する際zend_class_entryに、静的メソッドのポインターにアクセスしたいと思います。

非静的メソッドでは、次のようにgetThis()マクロとマクロ内で使用できますZ_OBJCE_P

zend_class_entry ce* = Z_OBJCE_P(getThis());

ここで問題があります。静的メソッドでは、マクロがポインターをgetThis()返すため、マクロを使用できません。nullZ_OBJCE_P

zend_class_entry静的メソッドからにアクセスするための解決策はありますか?

4

1 に答える 1

3

それは本当に興味深いです: 静的メソッドでは、このようにスコープにアクセスできます

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

EG マクロは、多くのグローバルおよびコンテキスト固有の変数、呼び出しスコープ、静的メソッドの呼び出しクラスにもアクセスします。

于 2010-12-23T14:17:03.080 に答える