1

我试图在定义静态类属性时为其赋值:

namespace Base;

abstract class Skeleton {   

protected static $entityManager = \Zend_Registry::get("EntityManager");
    ...
}

当我尝试执行此代码时,我收到此错误:

Parse error: syntax error, unexpected '(', expecting ',' or ';' in /var/www/
somewhere/application/models/Base/Skeleton.php on line 6

如果我只是为其分配一个简单的字符串值:

protected static $entityManager = "string";

一切都很好。我在做 PHP 无法处理的事情吗?如果是这样,如何解决这个问题?

4

2 回答 2

3

您不能将需要执行的代码作为类变量,无论是否为静态。

想一想,此时确实Zend_Registry::get("EntityManager")会执行,创建类时无法执行,因为您已将其设置为static.

即使它不是静态的,什么时候Zend_Registry::get("EntityManager")运行?当对象被实例化或一次?它需要放在类内的一个函数中。

于 2010-09-02T13:34:22.637 回答
1

类属性可能不依赖于必须在运行时评估的数据:

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

添加一个设置器并在引导期间设置值。

于 2010-09-02T13:32:35.450 回答