PHP从抽象类

时间:2016-11-15 17:42:34

标签: php

我遇到了一个我认为很容易解决的问题,但不知所措。我有一个抽象类,它有几个定义时间增量的常量,看起来像这样。

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 位于同一名称空间中,因此应该看到它。我也尝试添加完整的命名空间,但得到的结果相同。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您需要在constant()来电中添加名称空间 - 请参阅code @ 3v4l.org

修改 要纠正问题,添加命名空间就是解决方案。以下解决了这个问题。

为了更好地解释这个解决方案,这里需要的是。

public function getKeepAliveByUnit($timeUnit){
    return constant('root\namespace\DictionaryKeepAliveIncrements::'.$timeUnit);
}