Инверсия контейнера управления для PHP?[закрыто]
-
09-06-2019 - |
Вопрос
Я пытаюсь закодировать стиль TDD на PHP, и один из моих самых больших камней преткновения (кроме отсутствия достойной IDE) заключается в том, что мне нужно создать свой собственный взломанный контейнер IoC, чтобы правильно внедрить все мои макетные объекты.
Кто-нибудь использовал контейнер Ioc в PHP?Все, что мне удалось найти, это PHP IOC на вечно надоедливом phpclasses.org и, похоже, у него почти нет документации и не так много последователей.
Решение
Я экспериментировал с некоторыми DI Frameworks для PHP, но ни разу не использовал их в производстве.Есть несколько ссылок:
- http://www.stubbles.net/ Что, я думаю, самый старый, что я пробовал
- http://php.xjconf.net/
- ПОТОК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.