2008-09-09 9 views
20

Estoy tratando de codificar el estilo TDD en PHP y uno de mis principales obstáculos (además de la falta de un IDE decente) es que tengo que hacer mi propio contenedor IoC pirateado para inyectar todos mis objetos de simulación correctamente.Inversión de contenedor de control para PHP?

¿Alguien ha usado un contenedor de Ioc en php? Todo lo que he podido encontrar es PHP IOC on the ever-annoying phpclasses.org y parece que casi no tiene documentación ni mucho seguimiento.

+0

Mira mi proyecto de inyección de dependencia para PHP 5: https://github.com/jamolkhon/Sharbat – Jamol

+0

¿por qué esta pregunta se cierra como off- ¿tema? Este es uno de los temas más importantes en estos días –

+0

Acepto, la pregunta era si existía alguna, no una recomendación (y se me preguntó hace seis años). Pero como no hay una respuesta "correcta", puedo ver por qué podría verse como fuera de tema. –

Respuesta

1

He estado trabajando en un sustrato denominado PHP IoC/DI Container durante los últimos seis meses. Todavía es un trabajo en progreso, pero ha sido deployed in production durante un mes y medio y ha estado funcionando bastante bien hasta ahora.

Substrate está inspirado en Spring Framework, pero escrito teniendo en cuenta las fortalezas y limitaciones de PHP. La documentación es bastante mínima en este momento, pero hay algunos sample code, incluido un ejemplo de prueba de unidad. ¿Esto es algo que crees que podrías usar para TDD?

6

Phemto se está desarrollando de nuevo, y se ve muy prometedor en mi humilde opinión.

Algunos otros proyectos similares, que puede que desee mirar:

bucket (Negación: Soy el autor principal de éste),

El , ha existido desde hace mucho tiempo . No creo que esté siendo desarrollado activamente, pero, por otro lado, creo que es bastante estable. Ha pasado mucho tiempo desde que lo miré.

Un proyecto bastante nuevo, me encontré recientemente con Crafty. Sin embargo, no estoy seguro de cuántas personas lo usan.

También estoy viendo sphicy, que parece interesante.

+0

El enlace de descarga para Crafty está roto. Hablé con el autor, dijo que es un proyecto muerto, las versiones más nuevas de PHP lo rompieron debido a los cambios en la API de API de reflexión. –

+0

OK - He actualizado la publicación en consecuencia. – troelskn

3

Es posible que también desee probar Ding (http://marcelog.github.com/Ding) que se modela después de Spring (tm) para Java. Es una inversión completa de control y contenedor de inyección de dependencia, que también es compatible con AOP

2

PHP-DI es otro contenedor de inyección de dependencia.

Cuenta con inyección de dependencia a través anotaciones y configuración mínima, aquí es un ejemplo:

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

Es muy fácil de usar, y se integra con Zend Framework, por ejemplo.

(sí yo trabajo en este marco)

+0

+1 Conozco a algunos chicos de Zend y sé que han estado trabajando en los últimos años para hacer que el concepto sea más natural en PHP y más entendido en la comunidad php. –

0

laravel 4 tiene el mejor marco COI y DI. si no te importa usar un framework, la Laravel 4 es la manera de ir

+3

Es mejor zeh! 1 Zeh mejor !!! Uhh ... ¿por qué? – Gordon

Cuestiones relacionadas