为什么通过引用分配类属性不起作用?

时间:2011-03-27 18:02:00

标签: php

class c{
    public $myV = &$_GET;
}

它给了我错误:(

如果我做一个简单的事情:

$myV = &$_GET;

它有效

4 个答案:

答案 0 :(得分:4)

你甚至不能这样做:

public $x = $y;

从手册:

  

此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

要解决此问题,只需在__construct函数中设置它。

public function __construct()
{
  $this->myV = &$_GET;
}

答案 1 :(得分:2)

  

...但是这个初始化必须是一个   恒定值 - 也就是说,它必须是   能够在编译时进行评估   并且不能依赖于运行时   信息以便进行评估。

来自php.net : Properties

您可以在构造函数中定义此依赖项。

答案 2 :(得分:1)

试试这个:

class c {
    public $myV;

    function c() {
        $this->myV = &$_GET;
    }
}

在实例化类之前,不能将变量分配给字段。这样,当您从类中创建对象时,将设置变量。

答案 3 :(得分:1)

你可以达到类似的效果:

class c{
   public $myV;
   function __construct() { $this->myV = &$_GET; }
}