Эмуляция множественного и динамического наследования без PHP Traits ниже 5.4?
Предыстория: в PHP 5.4 теперь есть черты, которые позволяют вам составлять классы таким образом, чтобы вы могли повторно использовать эти "миксины" где угодно. Это широко используется в горизонтальном программировании и имеет важные преимущества: сокращение раздувания кода.
Вопрос:
- Как эмулировать то же поведение на более низких версиях PHP, не переходя через шаблон декоратора и генераторы статического кода?
Требования: решение должно работать так, как вы ожидаете от языка с правильным множественным наследованием; также переопределение переменной-члена в порядке, который вы определили в списке базовых классов.
Решение (я), которые я нашел до сих пор:
- Единственный реальный кандидат под рукой, который я нашел на данный момент, это "классный миксер" здесь. Проблема этого скрипта в том, что он частично зависит от eval, что может иметь некоторые недостатки. Есть также несколько других библиотек, но ни одна из них не получилась, то есть наследование конструктора
Не совсем, но приемлемые результаты: генераторы кода, как в Doctrine и других.
последнее решение, которое было найдено, состояло в том, чтобы эмулировать "множественное наследование", используя те же подходы, что и в библиотеках Javascript, то есть реализацию алгоритмов на основе C3.
Спасибо!