Гик, как рамки внедрения инъекций в PHP

Существуют ли какие-либо идеи, связанные с использованием Guice или аналогичной инъекции, в PHP? Если нет, то есть какие-либо хорошие рамки внедрения инъекций в PHP?

Я должен реализовать тот же код в PHP, что я реализовал на Java, и я использую Guice в своем проекте Java. Поэтому было бы проще реализовать версию PHP, если бы она использовала аналогичную структуру.

Solutions Collecting From Web of "Гик, как рамки внедрения инъекций в PHP"

(Проводя мой комментарий в ответ)

Посмотрите на мой клон Guice по имени Шарбат (значит сок). API совсем не похож на Guice's.

У него есть почти все, что вам нужно:

  • Ввод конструктора (не требует @Inject аннотации)
  • Внедрение поля (независимо от видимости, используя @Inject (FooBar))
  • Метод инъекции (независимо от видимости, требует @Inject аннотации)
  • Инъекция поставщика (для полей через @InjectProvider (T = FooBar) для методов через @Provider (T = FooBar, param = fooBarProvider)
  • Области (возможно реализовать пользовательский)
  • AOP (метод перехватчиков)
  • Круговые зависимости

См. Файл 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.

Ray.Di https://github.com/ray-di/Ray.Di