一千萬個為什麽

搜索

框架中的PHP對象引用

在我深入討論這個問題之前,我想一個簡單的問題;有沒有一種方法來確定變量是否是對另一個變量/對象的引用? (只是想檢查我是否正確傳遞引用,而不是制作我的對象的重復版本)。例如

$foo = 'Hello World';
$bar = &$foo;
echo (is_reference($bar) ? 'Is reference' : 'Is orginal';

我已經使用PHP5幾年了(僅限個人使用),我會說我在面向對象的實現主題上適度逆轉。然而,模型視圖控制器框架的概念對我來說是相當新的。

我查看了一些教程並查看了一些開源框架(主要是CodeIgnitor),以便更好地理解所有內容是如何組合在一起的。我開始意識到使用這種結構的真正好處。

我習慣於用以下技術實現對象引用。

class Foo{
    public $var = 'Hello World!';
}
class Bar{
    public function __construct(){
        global $Foo;
        echo $Foo->var;
    }
}
$Foo = new Foo;
$Bar = new Bar;

我很驚訝地看到CodeIgnitor和Yii傳遞了對象的參考,可以通過以下方法訪問:

$this->load->view('argument')

我能看到的直接優勢是代碼少得多,用戶友好。但是我想知道它是否更有效,因為這些框架可能是優化的?或者只是為了使代碼更加用戶友好?還是其他一些優勢?這是一篇有趣的文章不要使用PHP參考資料</一>。

我問的原因是我試圖將一個框架放在一起用於個人項目和學習曲線。

更新</強>

$Baz = $Foo;
$Baz->var = 'Goodbye World!';
echo $Foo->var;

/* Ouput */
Goodbye World!

我有點尷尬地說我不希望這個給出這個輸出。當然,確實讓事情變得容易多了。

最佳答案

The & operator is the PHP4 way to pass objects by reference, PHP5 does this by default. Code that still uses this operator is ment to be backward compatible.

You can still use & to pass other datatypes by reference in PHP5, but the need for it is very rare and i suggest to avoid it.

轉載註明原文: 框架中的PHP對象引用