1

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

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

为什么会这样?

4

3 回答 3

5

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

protected $val = NULL;

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

从文档:

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

于 2012-04-30T15:20:20.570 回答
3

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

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

class Myclass{
     protected $val;

     public function __construct(){
          $this->val = Zend_Registry::get('values');
     }
}
于 2012-04-30T15:20:36.273 回答
0

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

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

你可以这样做。

class something {
    protected $_val;

    public function __construct()
    {
        $this->_val = Zend_Registry::get('values');
    }
}
于 2012-04-30T15:21:12.503 回答