加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP扩展 – 从另一个PHP函数调用您自己的PHP函数

发布时间:2020-12-13 21:39:23 所属栏目:PHP教程 来源:网络整理
导读:假设我们有一个自定义 PHP扩展,如: PHP_RSHUTDOWN_FUNCTION(myextension){ // How do I call myfunction() from here? return SUCCESS;}PHP_FUNCTION(myfunction){ // Do something here ... RETURN_NULL;} 如何从RSHUTDOWN处理程序调用myfunction()? 解决
假设我们有一个自定义 PHP扩展,如:

PHP_RSHUTDOWN_FUNCTION(myextension)
{
   // How do I call myfunction() from here?
   return SUCCESS;
}
PHP_FUNCTION(myfunction)
{
   // Do something here
   ...
   RETURN_NULL;
}

如何从RSHUTDOWN处理程序调用myfunction()?

解决方法

使用提供的宏,调用将是:

PHP_RSHUTDOWN_FUNCTION(myextension)
{
   ZEND_FN(myFunction)(0,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,int return_value_used TSRMLS_DC
#define INTERNAL_FUNCTION_PARAM_PASSTHRU ht,return_value,return_value_ptr,this_ptr,return_value_used TSRMLS_CC

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读