ioc - php dependency injection library
Guice como marcos de inyección de dependencias en PHP (7)
(Publicar mi comentario como respuesta)
Echa un vistazo a mi clon de Guice llamado Sharbat (significa jugo). La API es muy similar a la de Guice.
Tiene prácticamente todo lo que necesitas:
- Inyección de constructor (no requiere anotación @Inject)
- Inyección de campo (independientemente de la visibilidad, utilizando @Inject (FooBar))
- Método de inyección (independientemente de la visibilidad, requiere la anotación @Inject)
- Inyección del proveedor (para campos a través de @InjectProvider (T = FooBar), para métodos a través de @Provider (T = FooBar, param = fooBarProvider)
- Ámbitos de aplicación (posible implementar uno personalizado)
- AOP (método interceptores)
- Dependencias circulares
Vea el archivo léame para ver un ejemplo de uso.
Esta pregunta ya tiene una respuesta aquí:
- Inversion of Control Container para PHP? [cerrado] 7 respuestas
¿Existen marcos de inyección de dependencia similares o similares a Guice en PHP? Si no, ¿hay algún marco de inyección de dependencia bueno en PHP?
Tengo que implementar el mismo código en PHP que lo que he implementado en Java y uso Guice en mi proyecto Java. Entonces sería más fácil implementar la versión de PHP, si usara un marco similar.
Aquí hay otro marco de dependencia para agregar a la lista: PHP-DI
Es un contenedor destinado a ser muy práctico de usar, siguiendo la convención sobre la configuración (por lo que termina escribiendo mucha menos configuración que con otros contenedores).
Cuenta con inyección de dependencia a través de anotaciones (que es opcional) y configuración mínima :
class Foo {
/**
* @Inject
* @var Bar
*/
private $bar;
public function hello() {
return $this->bar->sayHello();
}
}
Tenga en cuenta que las anotaciones son opcionales, sin embargo, si no le gusta, no tiene que usarla.
Es muy fácil de usar y se integra muy bien con Zend Framework y Symfony.
(descargo de responsabilidad: trabajo en este marco)
Existe el componente de inyección de dependencia Symfony''s .
Me gusta el Aura.Di . El archivo Léame en la página del proyecto github vinculado le brinda información suficiente para comenzar en un par de minutos. Sin embargo, depende de 5.3.
No creo que el uso de las anotaciones de Guice pueda implementarse en PHP en tiempo de ejecución sin un gran impacto en el rendimiento, si esa es su solicitud principal.
Me gustaría recomendarte la pimple . Es muy fácil de usar.
Hay una presentation interesante sobre este contenedor de inyección de dependencia (el autor de esta presentación es el creador de espinilla).
Permítanme presentarles mi implementación del clon de Guice.
Revisa
rg / injektor es un contenedor de inyección de dependencia sofisticado para PHP que fue inspirado por Guice. A diferencia de otros contenedores basados en reflexión, rg / injektor incluye un generador de clase de fábrica que puede utilizar para evitar el uso de la reflexión en la producción.
Presenta Inyección de constructor, Inyección de propiedad, Clases de proveedor, Gestión de objetos, Inyección con nombre y un par de cosas más. Está probado por unidades y está disponible a través de Composer.