Поэтому я начал работать с новым фреймворком под названием Zend Expressive, который является вторым фреймворком, основанным на компонентах PSR-7, который должен позволить вам довольно быстро получить и запустить код.
Теперь моя проблема с выразительным заключается в том, что по мере увеличения вашего проекта ваш заводской шаблон также увеличивается. Так для каждого Action
класс есть ActionFactory
class соединяется с ним, чтобы внедрить правильные зависимости, которые мы затем создаем псевдоним, прежде чем отправлять и передавать его нашему маршруту.
Чем больше действий, тем больше заводской шаблон, и я пытаюсь выяснить, как мы сокращаем этот котел?
Как я сказал в комментариях, я не думаю, что есть универсальное решение для создания заводов. Я знаю, что вы не используете zend-servicemanager, но он поставляется с командой cli для генерации фабричных классов: https://docs.zendframework.com/zend-servicemanager/console-tools/#generate-factory-for-class
Это может дать вам идеи о том, как создать фабричный генератор самостоятельно.
Вот статья об этом: http://www.masterzendframework.com/simple-factory-generation-with-factorycreator/
Может попытаться реализовать логику с решателем зависимостей.
Вы можете сохранить много фабрик, разрешив зависимость с помощью отражения классов.
$instance = null;
$reflection = new \ReflectionClass($className);
$constructor = $reflection->getConstructor();
if ($constructor === null) {
// no constructor specified, you can simply return the new instance.
$instance = $reflection->newInstanceWithoutConstructor();
} else {
// if there is constructor, you can loop through the constructor parameters and build the instance.
}
Нужно быть осторожным, чтобы избежать круговой зависимости здесь.