Draft Instances
Генератор классов по образцам ("черновикам")
Данный способ не похож на классический DI (Dependency injection), так как внедряет зависимости не программно при выполнении, а предварительно, генерируя и изменяя классы согласно настройкам. Созданные классы существуют в виде файлов, можно проверить их правильность, зависимости "видимы" для IDE и есть возможность для тестирования.Draft Instances - экспериментальная методика, как и некоторое другое во фреймворке HLEB, к которому эта библиотека относится. Не подходит для бездумного использования. При желании можно подключить библиотеку отдельно (генерация реализована в классе GeneratingTask).
Установка
Развертывание
Генерация
Генерация классов и обновление автозагрузчика. Каждый раз при изменении настроек или классов-образцов нужно запускать эту команду.Единственное отличие сгенерированных классов от обычных, созданных разработчиком - редактируются они только из "черновика" и настроек. При помощи настроек из одного образца("черновика") можно создать множество похожих классов для разных задач. Каждый "черновик" произволен по содержанию, принцип подстановки настроек в него прост, он задается следующим образом.
1) Массив с настройками:
По умолчанию в данной библиотеке создано несколько примеров (файл services.php и папка c "черновиками" DraftInstances), которые показывают возможности генерации.
Переключение для тестирования
Можно переназначить папку с образцами для генерации классов. Для этого нужно указать путь до файла с настройками.После этого можно запускать тесты.
Внимание! Действие применимо только для сервера разработки. После выполнения тестов нужно переключить на исходный код, выполнив эти консольные команды без указания пути.
Обновление библиотеки
Библиотека Draft Instances на GITHUB: github.com/phphleb/draft