Pergunta

Estou tentando codificar o estilo TDD em PHP e um dos meus maiores obstáculos (além da falta de um IDE decente) é que preciso criar meu próprio contêiner IoC hackeado apenas para injetar todos os meus objetos simulados corretamente.

Alguém já usou um contêiner Ioc em PHP?Tudo o que consegui encontrar foi PHP IOC no sempre irritante phpclasses.org e parece não ter quase nenhuma documentação e poucos seguidores.

Foi útil?

Solução

Brinquei com alguns DI Frameworks para PHP, mas não usei nenhum em produção.Tenha alguns links:

  1. http://www.stubbles.net/ que eu acho o mais antigo que eu tentei
  2. http://php.xjconf.net/
  3. FLUXO3 - Eu acredito que este se tornará uma estrutura muito agradável (sua beta agora)

Você mencionou que usaria isso para TDD - então talvez dê uma olhada em Injeção de dependência para testes unitários em PHP

Outras dicas

Phemto está sendo desenvolvido novamente e parece IMHO bastante promissor.

Alguns outros projetos semelhantes, que você pode querer dar uma olhada:

balde (Isenção de responsabilidade:Eu sou o autor principal deste)

O porta php do picocontainer, já existe há muito tempo.Não creio que esteja mais sendo desenvolvido ativamente, mas por outro lado, acredito que esteja bastante estável.Já faz muito tempo desde que olhei para isso.

Um projeto bastante novo, que descobri recentemente é Astuto.Não tenho certeza de quantas pessoas o usam.

Eu também estou assistindo esférico, o que parece interessante.

Você também pode tentar o Ding (http://marcelog.github.com/Ding), que é modelado após Spring(tm) para Java.É uma inversão completa do contêiner de injeção de controle e dependência, que também suporta AOP

E quanto ao Injeção de dependência do Symfony ou o equivalente PHP 5.3+ componente do projeto symfony 2.0.

PHP-DI é outro contêiner de injeção de dependência.

Possui injeção de dependência por meio de anotações e configuração mínima, aqui está um exemplo:

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

É muito fácil de usar e se integra ao Zend Framework, por exemplo.

(sim, eu trabalho nesta estrutura)

Eu tenho trabalhado em um Contêiner PHP IoC/DI denominado Substrato nos últimos seis meses.Ainda é um trabalho em andamento, mas foi implantado em produção por um mês e meio e tem funcionado muito bem até agora.

O Substrate é inspirado no Spring Framework, mas escrito tendo em mente os pontos fortes e as limitações do PHP.A documentação é mínima neste momento, mas há alguns Código de amostra, incluindo um exemplo de teste de unidade.Isso é algo que você acha que pode usar para TDD?

Laravel 4 possui a melhor estrutura de IoC e DI.se você não se importa em usar um framework, o Laravel 4 é o caminho a percorrer

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top