Как внедриться в класс? Разрабатываю для одного не очень гибкого фреймворка функционал т. н. «плагинов». Описывать функционал целиком не буду, сразу конкретизирую проблему.
Примитивная схема. Есть класс Component (ядро фреймворка). Есть трейт PluginTrat (мой трейт, могу писать всё что угодно), который подключается в компоненте:class Component
{
use PluginTrait;
function executeComponent()
{

}
}
trait PluginTrait
{

}
Мне нужно в трейте, не переназначая метод executeComponent(), внедриться в класс компонента и вызвать до и после выполнения метода executeComponent() свои методы трейта. Т. е. шаги выполнения класса компонента должны быть такими:
1. методТрейта1.
2. метод компонента executeComponent() (ну он и так сам будет выполняться).
3. методТрейта2.
Проблема заключается в том, что класс Component — это ядро фреймворка, и по определённым соображениям менять (внедряться) я его не могу. Кроме того, нужно учитывать, что цепочка наследования класса может быть увеличена, и в дочерних классах появится свой метод executeComponent() (его присутствие не должно нарушать порядок выполнения класса, описанный выше).

21 Авг 2019 в 07:07
166 +1
1
Ответы
Нет ответов
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 722 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир