我遇到了一个我认为很容易解决的问题,但不知所措。我有一个抽象类,它有几个定义时间增量的常量,看起来像这样。
abstract class DictionaryKeepAliveIncrements{
CONST second = 1;
CONST quarterminute = 15;
CONST halfminute = 30;
CONST minute = 60;
我试图从另一个类动态地访问它们
public function getKeepAliveByUnit($timeUnit){
return constant('DictionaryKeepAliveIncrements::'.$timeUnit);
}
这导致错误
警告:constant():无法找到常量
中的DictionaryKeepAliveIncrements ::分钟
DictionaryKeepAliveIncrements 与方法 getKeepAliveByUnit 位于同一名称空间中,因此应该看到它。我也尝试添加完整的命名空间,但得到的结果相同。
我错过了什么?
答案 0 :(得分:0)
您需要在constant()
来电中添加名称空间 - 请参阅code @ 3v4l.org
修改强> 要纠正问题,添加命名空间就是解决方案。以下解决了这个问题。
为了更好地解释这个解决方案,这里需要的是。
public function getKeepAliveByUnit($timeUnit){
return constant('root\namespace\DictionaryKeepAliveIncrements::'.$timeUnit);
}