PHP. Extension. Call existing PHP function

4 浏览
0 Comments

PHP. Extension. Call existing PHP function

所以我决定为php写一个扩展。一切都很好,除了我卡在一个小问题上。

我有php-5.4.9的源代码。有一个文件ext/standard/mail.c,里面有一个很棒的函数

PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC)

在我的扩展中,在acme.c中我有这些includes

...
#include "php.h"
#include "ext/standard/php_mail.h"
#include "php_ini.h"
...

所以php_mail感觉很好,工作正常。但是,显然,我想使用mail.c中从第101行到189行的代码(对应粘贴中的5-93行 http://pastie.org/5444192)。所以我想到一个主意(在某种程度上有些尴尬),为什么不调用PHP_FUNCTION(mail)呢?目前我找不到那个宏,实际上我想知道实现这个想法的最佳方法。

我的内心的zend工程师(他是新手)建议我使用call_user_function

ZEND_API int call_user_function(HashTable *function_table, zval **object_pp, zval *function_name, zval *retval_ptr, zend_uint param_count, zval *params[] TSRMLS_DC);

但是我搞不清楚如何调用它。

问题!如何(一个关于mail函数的例子是非常受欢迎的)调用由PHP_FUNCTION定义的函数?

0