2010-12-03 6 views
2

から独自のPHPの関数を呼び出しますか?コールがされる提供のマクロを使用してPHPエクステンションのは、我々のようなカスタムのPHP拡張を持っているとしましょう、別のPHP関数

void doStuff() 
{ 
    // Do something here 
    ... 
} 

PHP_RSHUTDOWN_FUNCTION(myextension) 
{ 
    doStuff(); 
    return SUCCESS; 
} 
PHP_FUNCTION(myfunction) 
{ 
    doStuff(); 
    RETURN_NULL; 
} 
+0

あなたはそれを実行したいですか? –

+0

はい、call == execute。 – m1tk4

+0

あなたはこれを理解したことがありますか?私はカスタムextの中からjson_encodeを呼び出す方法を考えようとしていました。それを引き抜く方法を理解することができませんでした。 – David

答えて

5

2

は、なぜあなたはスタブそうのようなPHP_FUNCTIONを作るいけない

PHP_RSHUTDOWN_FUNCTION(myextension) 
{ 
    ZEND_FN(myFunction)(0, NULL, NULL, NULL, 0 TSRMLS_CC); 
    return SUCCESS; 
} 

あなたを定義しているPHP_FUNCTION(myFunction)プリプロセッサ意志として機能します定義を次のように展開します。

ZEND_FN(myFunction)(INTERNAL_FUNCTION_PARAMETERS) 

これは次のとおりです。

zif_myFunction(int ht, zval *return_value, zval **return_value_ptr, zval *this_ptr, int return_value_used TSRMLS_DC) 

zend.hとphp.hからマクロ:

#define PHP_FUNCTION   ZEND_FUNCTION 
#define ZEND_FUNCTION(name)   ZEND_NAMED_FUNCTION(ZEND_FN(name)) 
#define ZEND_FN(name)      zif_##name 
#define ZEND_NAMED_FUNCTION(name)  void name(INTERNAL_FUNCTION_PARAMETERS) 
#define INTERNAL_FUNCTION_PARAMETERS int ht, zval *return_value, zval **return_value_ptr, zval *this_ptr, int return_value_used TSRMLS_DC 
#define INTERNAL_FUNCTION_PARAM_PASSTHRU ht, return_value, return_value_ptr, this_ptr, return_value_used TSRMLS_CC 
関連する問題