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).

0 ответов

Другие вопросы по тегам