Инверсия контейнера управления для PHP?[закрыто]

StackOverflow https://stackoverflow.com/questions/52072

  •  09-06-2019
  •  | 
  •  

Вопрос

Я пытаюсь закодировать стиль TDD на PHP, и один из моих самых больших камней преткновения (кроме отсутствия достойной IDE) заключается в том, что мне нужно создать свой собственный взломанный контейнер IoC, чтобы правильно внедрить все мои макетные объекты.

Кто-нибудь использовал контейнер Ioc в PHP?Все, что мне удалось найти, это PHP IOC на вечно надоедливом phpclasses.org и, похоже, у него почти нет документации и не так много последователей.

Это было полезно?

Решение

Я экспериментировал с некоторыми DI Frameworks для PHP, но ни разу не использовал их в производстве.Есть несколько ссылок:

  1. http://www.stubbles.net/ Что, я думаю, самый старый, что я пробовал
  2. http://php.xjconf.net/
  3. ПОТОК3 - Я верю, что это станет очень хорошей структурой (его бета -версия прямо сейчас)

Вы упомянули, что будете использовать его для TDD, так что, возможно, посмотрите Внедрение зависимостей для модульных тестов в PHP

Другие советы

Фемто снова разрабатывается и, ИМХО, выглядит весьма многообещающе.

Еще несколько подобных проектов, на которые вы можете обратить внимание:

ведро (Отказ от ответственности:Я основной автор этой статьи)

А php-порт пикоконтейнера, существует уже давно.Я не думаю, что он сейчас активно развивается, но с другой стороны, я считаю, что он достаточно стабилен.Хотя я уже давно на это смотрел.

Довольно новый проект, на который я недавно наткнулся, это хитрый.Хотя не уверен, сколько людей им пользуется.

я тоже смотрю острый, что выглядит интересно.

Вы также можете попробовать Ding (http://marcelog.github.com/Ding), созданный по образцу Spring(tm) для Java.Это полная инверсия контейнера внедрения элементов управления и зависимостей, который также поддерживает AOP.

Что насчет Внедрение зависимостей Symfony или эквивалент PHP 5.3+ компонент из проекта Symfony 2.0.

PHP-DI — это еще один контейнер для внедрения зависимостей.

Он поддерживает внедрение зависимостей через аннотации и минимальная конфигурация, вот пример:

class Foo {
    /**
     * @Inject
     * @var Bar
     */
    private $bar;
}

Он очень прост в использовании и интегрируется, например, с Zend Framework.

(да, я работаю над этой структурой)

Я работал над PHP IoC/DI-контейнер названный Substrate за последние шесть месяцев.Эта работа все еще находится в стадии разработки, но уже внедрен в производство уже полтора месяца и пока работает очень хорошо.

Substrate создан на основе Spring Framework, но написан с учетом сильных и слабых сторон PHP.На данный момент документация довольно минимальна, но есть некоторые образец кода, включая пример модульного тестирования.Вы думаете, что это можно использовать для TDD?

Laravel 4 имеет лучшую структуру IoC и DI.если вы не против использовать фреймворк, вам подойдет Laravel 4.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top