Download the PHP package arhone/construction without Composer
On this page you can find all versions of the php package arhone/construction. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download arhone/construction
More information about arhone/construction
Files in arhone/construction
Package construction
Short Description Сборщик пакетов - Внедрение зависимостей (PHP 7)
License MIT
Homepage https://github.com/arhone/builder
Informations about the package construction
Builder Container
Сборщик - Строитель - Внедрение зависимостей (PHP 7)
Описание
Builder собирает объекты по заданным инструкциям.
Предназначен для сборки объектов и управления их зависимостями.
Может быть использован как Dependency Injection Container (DIC) или Service Locator.
В отличие от того же DIC, Builder при сборке пакета может вызывать цепочку методов объекта, передавать зависимости в аргументы этих методов, задавать свойства объекта и т.д.
Builder как и Service Locator можно использовать локально в ваших классах, получая объект по псевдониму (alias)
или собирать по инструкции
Создаст объект класса ClassName, передаст в конструктор Alias, создаст и передаст в конструктор ClassName2, передаст в метод ClassName->config($config) массив с настройками $config
Подключение
1) Загрузите пакет с помощью composer или скачайте с github
2) Подключите Builder с помощью автозагрузчика
Передать/дополнить инструкции можно с помощью метода "instruction"
Подразумевается что config/builder/instruction.php вернёт массив с инструкциями, вроде тех, что описаны выше:
Инструкции для сборки
Инструкция строятся по типу Alias => instruction.
По "alias" вы запрашиваете сборку на основе его инструкции.
Builder понимает несколько типов инструкций:
1) class
В инструкции к сборке класса можно указать следующие правила
Подробнее о параметре chain для методов
Иногда возникают ситуации, когда классы нужно оберуть в какой то wrapper типа прокси или декоратора,
например для того что бы программно выбрать один класс из двух в зависимости от ситуации.
В таких случаях доступ к классу осуществляется не напрямую, а через метод, который возвращает объект, обычно такой метод называют getInstance.
Builder позволяет в инструкциях указать цепочки методов. Если у метода getInstance будет указан параметр chain => true, тогда вам вернётся результат этого метода.
2) callback
В случае с callback типом инструкции, Builder вернёт вам её результат. С помощью ключа "argument", можно указать набор зависимостей, с которым будет выполнятся функция. Если вы хотите возвращать функцию, а не результат её выполнения, указывайте тип "callable" Builder никак не обрабатывает тип "callable", по этому он просто вернёт что есть, по этой же причине вы не можете настроить "argument". То есть тип "callable" это просто для читабельности, но вы можете его назвать по другому, например "myFunc"
Обратите внимание, что вам может потребоваться кешировать настройки например в редис, в этом случае callback и callable не сработают, потому что кеш не хранит логику.
В место этого можно использовать тип include
4) include
При сборке этой инструкции, Builder вернёт результат выполненного файла
5) array, object, integer, float, bool
По большей части эти типы созданы для наглядности, но Builder будет приводить ваши данные к этим типам
Если вам не нужно приведение к типу, укажите свой тип. То есть придумайте любое слово, например добавьте подчёркивание _string или укажите через разделитель.
В случае с типом "object" можно использовать "clone" как в примерах с классом. Если clone == false, объект будет доступен по ссылке, как обычный объект без клонирования.
6) alias
В качестве инструкции можно передать другую инструкцию
7) instruction
Тип "instruction" позволяет ссылаться на инструкции, которые лежат за пределами вашей ответственности. Например это инструкции библиотеки, которую разрабатываете не вы. Разработчик библиотеки размещает инструкции для её сборки, а вы просто их подключаете.
vendor/name/Alias/config/builder/instruction.php:
Настройка класса Builder
У класса есть настройки по умолчанию