PHP 扩展:使用 __toString() 将对象转换为字符串
用 C 语言编写 PHP 扩展,我想通过 __toString() 来将用户态对象 (IS_OBJECT
) 转换为字符串(如果有的话),否则会失败。我应该用什么? 我不需要另一个 zval
输出,只需要一个 char *
。
zval *zo;
switch (Z_TYPE_P(zo)) {
case IS_STRING:
... Z_STRVAL_P(zo) ...
break;
case IS_OBJECT:
... ???(zo) ...
break;
...
}
Writing a PHP extension in C, I want to convert a userland object (IS_OBJECT
) to a string through __toString()
if it has one, and fail otherwise. What should I use?
I don't need another zval
on output, just a char *
.
zval *zo;
switch (Z_TYPE_P(zo)) {
case IS_STRING:
... Z_STRVAL_P(zo) ...
break;
case IS_OBJECT:
... ???(zo) ...
break;
...
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
反射模块执行类似的操作
,然后您可以使用 Z_STRVAL_P() 提取 char*。
但我猜你也可以使用
zend/zend_object_handlers.c 中实现的 zend_std_cast_object_tostring() 。您可能想检查它是否真的符合您的要求
The reflection module does something like
And then you'd extract the char* with Z_STRVAL_P().
But I guess you could also use
zend_std_cast_object_tostring() is implemented in zend/zend_object_handlers.c. You might want to check if it really does what you want