首页 > 编程语言 >PHP函数调用延期实现方法

PHP函数调用延期实现方法

来源:互联网 2026-06-24 20:40:06

为PHP扩展调用内部mail函数:一次技术探索 事情是这样的:我决定为PHP编写一个扩展。整体进展顺利,但偏偏在一个小环节上卡住了。 我手头有PHP-5.4.9的源代码。在ext/standard/mail.c文件里,有一个非常棒的函数: PHPAPI int php_mail(char *to,

为PHP扩展调用内部mail函数:一次技术探索

事情是这样的:我决定为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中,我已经包含了必要的头文件:

...

#include “php.h”

#include “ext/standard/php_mail.h”

#include “php_ini.h”

...

这样一来,直接调用php_mail函数感觉良好,工作也正常。但问题来了——我更希望直接使用mail.c文件中从第101行开始、到第189行结束的那段代码逻辑(对应pastie.org/5444192中第5-93行的内容)。

于是,一个想法冒了出来(虽然细想之下有点尴尬):为什么不直接调用PHP_FUNCTION(mail)呢?但眼下我找不到这个宏的具体定义,实际上,我更想知道实现这个想法的最佳路径是什么。

来自内部的建议与遇到的障碍

我内心的工程师(坦白说,这方面还是新手)建议我使用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);

然而,具体该如何调用它,我却没能理出头绪。

那么,核心问题来了:究竟该如何调用由PHP_FUNCTION定义的函数呢?如果能以mail函数为例进行说明,那就再好不过了。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。