在我深入讨论讨论部分之前,有没有一个快速的问题;有没有一种方法来确定一个变量是否是对另一个变量/对象的引用?(只想检查我是否正确地传递了引用,而不是复制我的对象)。例如
$foo = 'Hello World';
$bar = &$foo;
echo (is_reference($bar) ? 'Is reference' : 'Is orginal';
我使用php5已经有几年了(仅限个人使用),我认为在面向对象的实现这个主题上,我有点相反。然而,模型-视图-控制器框架的概念对我来说是相当新的。
我看过很多教程,也看过一些开源框架(主要是codeignator),以便更好地理解所有东西是如何组合在一起的。我开始意识到使用这种结构的真正好处。
我习惯于用以下技术实现对象引用。
class Foo{
public $var = 'Hello World!';
}
class Bar{
public function __construct(){
global $Foo;
echo $Foo->var;
}
}
$Foo = new Foo;
$Bar = new Bar;
我很惊讶地看到codeignator和yii传递对象的引用,可以通过以下方法访问:
$this->load->view('argument')
我能看到的直接优势是更少的代码和更友好的用户。但我想知道,如果这些框架被优化,它是否更有效?或者仅仅是为了让代码更加用户友好?或者其他优势?这是一篇有趣的文章
Do not use PHP references
.
我问这个问题的原因是,我试图为个人项目和学习曲线建立一个框架。
更新
$Baz = $Foo;
$Baz->var = 'Goodbye World!';
echo $Foo->var;
/* Ouput */
Goodbye World!
我有点不好意思地说,我没想到会有这样的结果。现在确实让事情变得容易多了。