2010-06-02 101 views
7

我有一個類中的方法試圖返回一個指針:PHP - 可以返回一個指針嗎?

<?php 
public function prepare($query) { 
    // bla bla bla 

    return &$this->statement; 
} 
?> 

但它產生以下錯誤:

解析錯誤:語法錯誤,意想不到的「&」在/家/ realst34 /的public_html/s98_fw /班/在線sql.php

此代碼,但是,工作原理:

<?php 
public function prepare($query) { 
    // bla bla bla 

    $statement = &$this->statement; 
    return $statement; 
} 
?> 

這是PHP的本質還是我做錯了什麼?

+0

什麼版本的PHP? 4或5? – 2010-06-03 00:00:53

+2

他使用「public」,所以它是5.而PHP 4已經死了。 – johannes 2010-06-03 00:05:46

+0

@johannes - 好點。 – 2010-06-03 01:08:55

回答

13

PHP沒有指針。 PHP有參考。 PHP中的引用是一個真正的別名。但你不需要他們。對象通過句柄傳遞(因此他們感覺像引用)用於其他數據PHP使用寫時複製機制,因此不存在內存/性能損失。在使用引用時,性能會受到影響,因爲它們會禁用寫入時複製以及引擎中的所有優化。

如果你真的想返回參考揮霍todeclare它的簽名:

public function &prepare($query) { 
    // bla bla bla 

    return $this->statement; 
} 

但正如說:如果$這個 - >語句是一個對象,也沒有必要。

另請參見http://php.net/references

+0

謝謝!我一定要看看指針/引用/別名等的區別。我只是返回對象(它是一個對象)。 – 2010-06-03 00:23:56