Существуют ли какие-либо идеи, связанные с использованием Guice или аналогичной инъекции, в PHP? Если нет, то есть какие-либо хорошие рамки внедрения инъекций в PHP?
Я должен реализовать тот же код в PHP, что я реализовал на Java, и я использую Guice в своем проекте Java. Поэтому было бы проще реализовать версию PHP, если бы она использовала аналогичную структуру.
(Проводя мой комментарий в ответ)
Посмотрите на мой клон Guice по имени Шарбат (значит сок). API совсем не похож на Guice's.
У него есть почти все, что вам нужно:
См. Файл readme, например, использование.
Мне нравится легкий Aura.Di. В файле readme на связанной странице github вы получите достаточно информации, чтобы начать работу через пару минут. Это зависит от 5.3.
Я не думаю, что использование Guice аннотаций может быть реализовано на PHP во время выполнения без особого влияния на производительность, если это ваш основной запрос.
Я бы хотел порекомендовать вам прыщ . Он очень прост в использовании.
Существует интересная презентация об этом контейнере для инъекций зависимостей (автором этой презентации является создатель прыща).
Существует компонент Ingenion Dependency Injection от Symfony .
Вот еще одна структура зависимостей для добавления в список: PHP-DI
Это контейнер, который должен быть очень практичным в использовании, после соглашения по конфигурации (поэтому вы в конечном итоге пишете гораздо меньше конфигурации, чем в других контейнерах).
Он включает инъекцию зависимостей через аннотации (что необязательно) и минимальную конфигурацию :
class Foo { /** * @Inject * @var Bar */ private $bar; public function hello() { return $this->bar->sayHello(); } }
Имейте в виду, что аннотации являются необязательными, хотя, если вам не нравится, вам не нужно его использовать.
Он очень прост в использовании и очень хорошо сочетается с Zend Framework и Symfony.
(отказ от ответственности: я работаю над этой структурой)
Проверять, выписываться
rg \ injektor – это сложный контейнер для инъекций для PHP, который был вдохновлен Guice. В отличие от других контейнеров на основе отражения, rg \ injektor включает генератор фабричных классов, который можно использовать для предотвращения использования рефлексии при производстве.
Он включает в себя инжекцию конструктора, вложение объектов, классы поставщиков, управление объектами, именованные инъекции и еще пару вещей. Он протестирован с помощью модуля и доступен через Composer.
Позвольте мне представить мою реализацию клона Guice.