2012-08-15 166 views
2

在PHP中,它是有效的寫是這樣的:Zend引擎返回的對象引用

<?php 
class Foo 
{ 
    public function bar() 
    { 
     return $this; 
    } 
} 
?> 

我怎樣才能做到這裏面Zend引擎?我想要一個方法來執行一些操作,然後返回類實例引用。

此外,我想存儲一些對象(來自其他類)並返回它們作爲一些其他方法的結果,我應該存儲它的zval*?什麼是正確的方式來返回它的參考?

回答

1

沒錯,你需要返回zval*。您需要使用RETURN_ZVAL爲此,該聲明爲:

RETURN_ZVAL(zv, ctor, dtor) 

第一個參數,zv是你zval*。第二個ctor告訴Zend引擎使用複製構造函數(它用於維護refcount)。最後一個參數dtor告訴Zend引擎將析構函數應用到zv(也與refcount相關)。通常,除非您知道自己在做什麼,否則最後兩個參數應分別爲10

要返回$this,每例如:

PHP_METHOD(Foo, bar) 
{ 
    RETURN_ZVAL(getThis(), 1, 0); 
} 

這裏,getThis()返回zval*$this。如果您願意,您可以通過其他任何包含PHP對象的zval*