在php中,可以这样写:
<?php
class Foo
{
public function bar()
{
return $this;
}
}
?>
如何在zend引擎内执行此操作我想要一个方法执行一些操作,然后返回类实例引用。
此外,我想存储一些对象(来自其他类)并作为其他方法的结果返回它们,我是否应该存储它的
zval*
返回对它的引用的正确方法是什么? 最佳答案
对,您需要返回zval*
您需要为此使用RETURN_ZVAL
,声明为:
RETURN_ZVAL(zv, ctor, dtor)
第一个参数,
zv
是您的zval*
第二个ctor
告诉Zend引擎使用copy构造函数(它用于维护refcount
)最后一个参数dtor
告诉Zend引擎将析构函数应用到zv
(也与refcount
相关)通常,除非您知道自己在做什么,否则最后两个参数应该分别是1
和0
。要返回
$this
,每个示例:PHP_METHOD(Foo, bar)
{
RETURN_ZVAL(getThis(), 1, 0);
}
这里,
getThis()
返回一个zval*
到$this
如果愿意,可以传递任何其他包含PHP对象的zval*
。