Как справиться с заводским образцом, когда ваш проект станет больше?

Поэтому я начал работать с новым фреймворком под названием Zend Expressive, который является вторым фреймворком, основанным на компонентах PSR-7, который должен позволить вам довольно быстро получить и запустить код.

Теперь моя проблема с выразительным заключается в том, что по мере того, как ваш проект становится больше, ваш заводской шаблон также увеличивается. Так для каждого Action класс есть ActionFactory class соединяется с ним, чтобы внедрить правильные зависимости, которые мы затем создаем псевдоним, прежде чем отправлять и передавать его нашему маршруту.

Чем больше действий, тем больше заводской шаблон, и я пытаюсь выяснить, как мы сокращаем этот котел?

2 ответа

Решение

Как я сказал в комментариях, я не думаю, что есть универсальное решение для создания заводов. Я знаю, что вы не используете zend-servicemanager, но он поставляется с командой cli для генерации фабричных классов: https://docs.zendframework.com/zend-servicemanager/console-tools/

Это может дать вам идеи о том, как создать фабричный генератор самостоятельно.

Вот статья об этом: 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.
    }

Нужно быть осторожным, чтобы избежать круговой зависимости здесь.

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