商城首页欢迎来到中国正版软件门户

您的位置:首页 >php延期,PHP 延期 调用现有的PHP函数

php延期,PHP 延期 调用现有的PHP函数

  发布于2026-05-03 阅读(0)

扫一扫,手机访问

为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函数为例进行说明,那就再好不过了。

本文转载于:https://blog.csdn.net/weixin_32836221/article/details/116157127 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注