通过引用将变量传递到 PHP 扩展中
我正在编写一个 PHP 扩展,它引用一个值并更改它。 PHP 示例:
$someVal = "input value";
TestPassRef($someVal);
// value now changed
什么是正确的方法?
I'm writing a PHP extension that takes a reference to a value and alters it. Example PHP:
$someVal = "input value";
TestPassRef($someVal);
// value now changed
What's the right approach?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
编辑2011年9月13日:
正确的方法是使用
ZEND_BEGIN_ARG_INFO()
系列宏 - 请参阅 扩展和嵌入 PHP 第 6 章(Sara Golemon,开发人员库)。此示例函数按值采用一个字符串参数(由于
ZEND_ARG_PASS_INFO(0)
调用),并通过引用采用此后的所有其他参数(由于ZEND_BEGIN_ARG_INFO
的第二个参数为 1 )。在添加
convert_to_null
之前,它会在每次调用时泄漏内存(我不知道在添加ZENG_ARG_INFO()
调用后是否有必要这样做)。Edit 2011-09-13:
The correct way to do this is to use the
ZEND_BEGIN_ARG_INFO()
family of macros - see Extending and Embedding PHP chapter 6 (Sara Golemon, Developer's Library).This example function takes one string argument by value (due to the
ZEND_ARG_PASS_INFO(0)
call) and all others after that by reference (due to the second argument toZEND_BEGIN_ARG_INFO
being 1).Before adding the
convert_to_null
it would leak memory on every call (I've not whether this is necessary after addingZENG_ARG_INFO()
calls).