PHP:在运行时向类中添加常量

时间:2011-04-20 12:09:26

标签: php oop constants class-constants

我有以下代码:

interface ITest {
    const SIGNAL_FOO = 'foo';
}
class SomeClass extends SignalSlotObject implements ITest {
    const SIGNAL_BAR = 'bar';
}

SignalSlotObject在运行时从类及其实现的所有接口中获取以'SIGNAL_'开头的所有常量。这很好并且有效,但我的问题是:

$c = new SomeClass();
$c->connect(SomeClass::SIGNAL_BAR, ...); //works well
$c->connect(ITest::SIGNAL_FOO, ...);     //also works well
$c->connect(SomeClass::SIGNAL_FOO, ...); //doesn't work

让第3个选项工作也很好,因为使用SomeClass的程序员无法知道,如果此信号是在SomeClass或其中一个接口中定义的。

我的目的是在运行时动态地将接口​​中定义的常量添加到类中,但我没有提示如何在运行时向类添加常量。我也无法使用__set__get,因为它们不适用于静态范围(它们适用于$c->SIGNAL_FOO但不适用于SomeClass::SIGNAL_FOO)。

0 个答案:

没有答案