在我深入讨论解构部分之前,有没有一种方法来确定变量是否是对另一个变量/对象的引用? (只是想检查我正确传递引用,而不是使我的对象的重复版本)。例如框架中的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!
我有点不好意思地说,我没想到这给这个输出。现在肯定会让事情变得更容易。