1

我有以下代码:

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

让第三个选项也能正常工作会很好,因为使用的程序员SomeClass不知道这个信号是否定义在SomeClass它的接口中或其中一个接口中。

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

4

0 回答 0