container от thephpleague как и ваш способ работает на рефлексии так что разницы особо нет, единственно что container thephpleague использует такие чтуки как Inflectors, Service Providers которые тоже могут быть полезны. Ну и он идет по дефолту в Laravel
я имею ввиду что если вы пишите например библиотеку которая может на вход принимать объекты разных классов но должны соблюдать определенный контракт:
class Parser{
function __construct(LoggerInterface $logger){}
$parser = new Parser(new MyLogger);
или
$parser = new Parser(new Monolog\Logger("default"));
но в вашем случае вы работает с контроллерами который на вход берут уже конкретные классы
так подождите а какая роль интерфейсов у вас, ведь всегда на вход будет идти один и тот же объект, указанный в @Dependencies . Получается это равносильно __construct(\app\Core\View\BaseView $view,....)
с container auto-wiring
при поиске kl9 MAHLE вы получите позиции:
kl9 MAHLE - 0 уровень кросса (искомый)
42540151A DUCATI - 1
9153580680OE Peugeot - 1
FE1D317 BILSTEIN - 2
соответственно уровень кроссов можно ограничить, не искать больше 2 уровней и тд, а также нет смысла искать товар уже найденный то есть связка FE1D317 BILSTEIN -> kl9 MAHLE проигнорируется так как kl9 MAHLE уже найден
у детали есть уровень кроссирования который можно присваивать искомый 0, кросс 1 уровня, кросс 2 уровня и тд. При поиске можно регулировать насколько глублоко стоит искать, а также уровнем кросса можно регулировать чтобы детали не пересекались
вам не обязательно все блоки подгружать и делать изменяющими через амдинку, можно и в статике, если возникнет необходимость перевести на динамику то переводите и делайте редактируемым блоком.
кроме модулей есть такие вещи как контроллеры, модели, вьюхи, сервисы, конфиги, миграции и тп которые можно объединить в пакеты/компоненты/бандлы , например: галерея, каталог, блог и тд.
Соответственно можно организовать настройки роутинга и организацию ссылок для каждого пакета, пример работы такого роутинга есть в Laravel .
можно и не заворачиваться и установить фиксированные цены если вы работаете с шаблонными сайтам, но из практики даже дизайн может выйти на 100тр а для некоторых устроит и стандартный шаблон.
Я (специалист по ТЗ) звоню/пишу Вам (клиенту) задаю вопросы согласно предполагаемому функционалу, показываю ТЗ программистам, они задают свои вопросы, я снова звоню/пишу Вам уточняю, и так далее пока программисты не скажут свою оценку по трудозатратам, на основании которой можно сообщить клиенту стоимость функционала.
Понятно что в цепочке могут участвовать и дизайнеры и администраторы.
Так как это может длится довольно долго то клиенту можно озвучить примерную стоимость , или даже взять аванс, но позже детализация все равно необходима.