在我深入讨论部分之前,先问一个简单的问题;有没有一种方法可以确定一个变量是否是对另一个变量/对象的引用?(只是想检查我是否正确传递了引用,而不是制作我的对象的重复版本)。例如
$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!
我有点尴尬地说我没想到会给出这个输出。现在确实让事情变得容易多了。