在我深入討論解構部分之前,有沒有一種方法來確定變量是否是對另一個變量/對象的引用? (只是想檢查我正確傳遞引用,而不是使我的對象的重複版本)。例如框架中的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的傳遞對象的referencs,並且可以通過以下方法獲得:
$this->load->view('argument')
的直接優點我可以看到的是少了很多的代碼和多個用戶友善。但是我想知道它是否更高效,因爲這些框架大概是優化的?或者只是爲了使代碼更加用戶友好?或者其他一些優勢?這是一篇有趣的文章Do not use PHP references。
我問的原因是我試圖把個人項目和學習曲線放在一起。
UPDATE
$Baz = $Foo;
$Baz->var = 'Goodbye World!';
echo $Foo->var;
/* Ouput */
Goodbye World!
我有點不好意思地說,我沒想到這給這個輸出。現在肯定會讓事情變得更容易。