Я пытаюсь закодировать TDD-стиль в PHP, и один из моих самых больших камней преткновения (кроме отсутствия достойной IDE) заключается в том, что я должен сделать свой собственный взломанный вместе контейнер IoC, чтобы правильно внедрить все мои макеты.
Кто-нибудь использовал контейнер Ioc в php? Все, что мне удалось найти, это PHP IOC на постоянно раздражающем phpclasses.org, и, похоже, он почти не имеет документации и не так много из следующего.
Я играл с некоторыми документами для PHP, но я не использовал их в производстве. Есть несколько ссылок:
Вы упомянули, что будете использовать его для TDD – так что, возможно, посмотрите на Injection Dependency для модульных тестов в PHP
Phemto развивается снова, и выглядит довольно многообещающим IMHO.
Несколько других подобных проектов, на которые вы можете обратить внимание:
ведро (Отказ от ответственности: я главный автор этого)
Php-порт picocontainer существует уже давно. Я не думаю, что это активно развивается, но, с другой стороны, я считаю, что он довольно стабилен. Прошло много времени с тех пор, как я посмотрел на него.
Довольно новый проект, который я недавно наткнулся, – это Crafty . Не уверен, сколько людей использует его.
Я также наблюдаю за sphicy , который выглядит интересным.
Вы также можете попробовать Ding (http://marcelog.github.com/Ding), который был смоделирован после Spring ™ для Java. Это полная инверсия контейнера для инъекций контроля и зависимости, который также поддерживает AOP
Как насчет инъекции Symfony Dependency Injection или эквивалентного компонента PHP 5.3+ из проекта symfony 2.0.
PHP-DI – это другой контейнер для инъекций зависимостей.
Он представляет собой инъекцию зависимостей через аннотации и минимальную конфигурацию , вот пример:
class Foo { /** * @Inject * @var Bar */ private $bar; }
Он очень прост в использовании и интегрируется с Zend Framework, например.
(да, я работаю над этой структурой)
Я работаю над контейнером IoC / DI PHP под названием «Субстрат» в течение последних шести месяцев. Это все еще очень много работы, но она была развернута на производстве в течение полутора месяцев и до сих пор работает очень хорошо.
Субстрат вдохновлен Spring Framework, но написан с учетом сильных и слабых сторон PHP. Документация на данный момент довольно минимальна, но есть пример кода , включая пример единичного тестирования. Это то, что вы считаете возможным использовать для TDD?
Laravel 4 имеет лучшие IoC и DI рамки. если вы не против использования рамки, то Laravel 4 – это способ пойти