Zend和静态类属性
问题描述:
我试图定义它,当一个值赋给一个静态类属性:Zend和静态类属性
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不能处理的事情吗?如果是这样,如何解决这个问题?
答
你不能把需要执行的代码作为一个类变量,是否为静态的。
想一想,Zend_Registry::get("EntityManager")
在哪一点被执行,当创建类时因为已将其设置为static
而无法执行。
即使它不是静态的,Zend_Registry::get("EntityManager")
何时运行?当对象被实例化或一次?它需要放在课堂上的一个功能。
答
Class properties may not depend on data that has to be evaluated at runtime:
[Class member variables] may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.
添加一个setter和引导过程中设置的值。