PHP: добавление констант в класс во время выполнения
У меня есть следующий код:
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
или один из его интерфейсов.
Мое намерение состояло в том, чтобы динамически добавлять константы, определенные в интерфейсах, к классу во время выполнения, но я не имею ни малейшего совета, как добавить константу во время выполнения к классу. Я тоже не могу использовать __set
а также __get
потому что они не работают в статической области видимости (они будут работать для $c->SIGNAL_FOO
но не для SomeClass::SIGNAL_FOO
).