PHP(Zend Framework)中的解析错误


Parsing error in PHP (Zend Framework)

我有这个代码:
protected $val = Zend_Registry::get('values');

每当我输入这段代码时,我都会得到:
Parse error: syntax error, unexpected '(', expecting ',' or ';' in ...

为什么会这样?

不能使用函数调用或其他动态表达式来初始化类属性。 它只能是一个常量或原子值。 如果需要使用函数调用对其进行初始化,则必须在构造函数中执行此操作。

protected $val = NULL;
public function __construct() {
  $this->val = Zend_Registry::get('values');
}

从文档中:

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

不能将函数的返回值用于类变量的初始值。

但是,您可以在类的构造函数中设置它。

class Myclass{
     protected $val;
     public function __construct(){
          $this->val = Zend_Registry::get('values');
     }
}

因为它看起来像一个类变量,你不能像那样将数据分配给类变量。

看这里 http://www.php.net/manual/en/language.oop5.properties.php

你可以这样做。

class something {
    protected $_val;
    public function __construct()
    {
        $this->_val = Zend_Registry::get('values');
    }
}