2012-11-24 78 views
-1

可能重复:
Reference - What does this symbol mean in PHP?PHP特殊的符号

我学习使用this tutorial。还有PHP MVC我发现用于对象初始化以下的特殊符号

$this->$model =& new $model; 

我知道&用于fo r代表HTML中的&符号(&),这里是什么意思?下面给出了符号的类。该教程是什么?。它是一个好的吗?如果没有人可以更好地引用我一?

<?php 
class Controller { 

    protected $_model; 
    protected $_controller; 
    protected $_action; 
    protected $_template; 

    function __construct($model, $controller, $action) { 

     $this->_controller = $controller; 
     $this->_action = $action; 
     $this->_model = $model; 

     $this->$model =&amp; new $model; 
     $this->_template =&amp; new Template($controller,$action); 

    } 

    function set($name,$value) { 
     $this->_template->set($name,$value); 
    } 

    function __destruct() { 
      $this->_template->render(); 
    } 

}

+0

这并不像有效的PHP给我。运行时会产生错误或警告吗? – Dai

+5

请找一个更好的教程。 '$ variable =&new Something'是PHP 4中的一个剩余部分,在PHP 5中不需要。'mysql_ *'函数被弃用*,不应该在新代码中使用。像'register_globals'和'magic_quotes_gpc'一样。 – DCoder

+0

你能告诉我一个很好的教程吗? –

回答

2

&amp; translates to &所以这将通过参考分配。 (由DCoders评论)。
你们看到的实际上应该是:

$this->$model =& new $model; 

And =& in php relates to passing something by reference.

虽然有些人会认为,在PHP5它是没有必要的(我同意)它不完全是一回事,知道它可能是乐于助人......

(从手动)

其中一个关键点经常提到的PHP 5 OOP是 “默认情况下通过引用传递”对象。这不完全是 是真的。

This section rectifies that general thought using some examples.

+0

是不是通过引用传递函数,而不是对象? –

+1

@PRPGFerret,该手册对此有一些解释http://php.net/manual/en/language.oop5.references.php – Frankie

+2

这是[*作者参考*](http://us.php.net /manual/en/language.references.whatdo.php#language.references.whatdo.assign),而不是通过引用*传递。 – DCoder

3

在此上下文&用于该对象通过参考分配,但其废弃。 对象在PHP 5中默认分配为引用,因此无需在此处使用此对象。

0

在PHP

$a = &$b 

手段通过引用传递值。 在版本5的PHP中,默认情况下所有对象都通过引用传递。所以,你可以直接跳过&符号

$a = new b();