【发布时间】:2014-08-13 00:35:31
【问题描述】:
定义可以被命名空间中的多个类使用的常量的最佳方法是什么?我试图避免过多的继承,所以扩展基类不是一个理想的解决方案,我正在努力寻找一个使用特征的好的解决方案。这在 PHP 5.4 中是否有可能,还是应该采取不同的方法?
我有以下情况:
trait Base
{
// Generic functions
}
class A
{
use Base;
}
class B
{
use Base;
}
问题是无法在 PHP 特征中定义常量。理想情况下,我想要以下内容:
trait Base
{
const SOME_CONST = 'someconst';
const SOME_OTHER_CONST = 'someotherconst';
// Generic functions
}
然后可以通过应用 trait 的类访问这些:
echo A::SOME_CONST;
echo B::SOME_OTHER_CONST;
但是由于特征的限制,这是不可能的。有什么想法吗?
【问题讨论】:
-
你可以使用静态属性,它不是一个常量,但在调用它时也只有一个字符不同...
public static $SOME_VAR = 'someconst';和echo B::$SOME_VAR -
感谢您的提示。这是一种选择,尽管这是一项重构工作,而不是新代码,所以我更希望行为保持不变而不是更新所有常量调用(有很多)。
-
你可以使用接口来声明常量。