Me gustaría saber cuál es la mejor manera de incluir archivos php de terceros en symfony2. Estoy usando un paquete php - ajax diferente para cargar archivos en mi aplicación symfony2. El paquete me ofrece algunos códigos php oops que necesito usar en mi controlador symfony. Estoy creando objetos de ese código en mi controlador. Entonces me gustaría saber dónde puedo poner ese código o archivo de terceros y cómo puedo incluir o crear objetos de ese código en mi controlador symfony2. ¿Usamos require o include en symfony2 también? Si es así, ese es el único enfoque.Mejor enfoque Para incluir archivos de terceros con Symfony2
Respuesta
No estoy tan seguro de tratar de agregar espacios de nombres a una biblioteca de terceros. Twig, por ejemplo, no usa espacios de nombre. Y realmente no hay necesidad. Considere, por ejemplo, un caso en el que desee usar el componente PDF de la biblioteca Zend_Framework 1.
En el archivo app/autoload.php que haría algo como:
$loader->registerPrefixes(array(
'Twig_Extensions_' => $ws . 'Symfony/vendor/twig-extensions/lib',
'Twig_' => $ws . 'Symfony/vendor/twig/lib',
'Zend_' => $ws . 'ZendFramework-1.0.0/library',
));
// And since Zend internally uses require/include we need to set an include path
ini_set('include_path','.' .
PATH_SEPARATOR . $ws . 'ZendFramework-1.0.0/library'
);
En este punto debemos ser capaces de crear objetos 3º parte interior de los controladores mientras que dejan el sistema de carga automática hacerse cargo de la búsqueda y incluyendo las clases:
$page = new \Zend_Pdf_Page(\Zend_Pdf_Page::SIZE_A4);
$doc->pages[] = $page;
$font1 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_HELVETICA);
$font2 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_COURIER_BOLD);
Usted tiene que usar el \ para evitar la falta de espacios de nombres.
Esta respuesta asume que su biblioteca de 3ra parte sigue la convención de nomenclatura de clase más o menos estándar. Si tiene su propia funcionalidad de carga automática, solo llámala desde autolaod.php también. Y si no desea utilizar la carga automática, configure la ruta de inclusión e inclírela.
The documentation explica la estructura del directorio en detalle.
Básicamente, puede colocarlos donde desee, pero para mantener la coherencia y seguir las mejores prácticas, debe colocar sus bibliotecas de terceros en el directorio vendor/
.
Que puede incluir los archivos relevantes con espacios de nombres.
¡Excelente respuesta! Tuve esta situación hace un tiempo y la resolví exactamente así ... –
@Hakan Deryal. Gracias por su respuesta, ¿puede decirme si creé una carpeta como tercero en el proveedor y coloco mi archivo de terceros allí de tal manera que vendor/thirdparty/myfile.php cómo podría incluirlo en mi paquete de Acme. – ScoRpion
¿La aplicación de terceros usa espacios de nombres? Puede verificarlo buscando una línea en la parte superior del archivo como 'namespace ....' –
- 1. Proyecto Symfony2 con Git: ¿el mejor enfoque?
- 2. ¿Cuál es la mejor práctica para incluir archivos jar de terceros en un programa Java?
- 3. PHP - La mejor práctica para pasar variables para incluir archivos
- 4. JAVA - Mejor enfoque para analizar archivos JSON grandes (extra grandes)
- 5. Mejor enfoque algorítmico para análisis de opinión
- 6. ¿Cómo obtener un mejor enfoque en la lectura de archivos?
- 7. Mejor enfoque para el cliente WCF
- 8. Mejor enfoque para obtener ipv4 último octeto
- 9. Lista de .NET mejor enfoque
- 10. ¿La mejor manera de incluir archivos en PHP?
- 11. Symfony2 Incluir en html en Twig
- 12. ¿Debería incluir bibliotecas de terceros que adopte en su proyecto?
- 13. Ant: Renombrar archivos para incluir su MD5
- 14. Mejor enfoque para la prueba de IU de QT
- 15. Mejor enfoque para el análisis de XML en el iPhone
- 16. Mejor enfoque para pasar y manejar argumentos para funcionar
- 17. mejor enfoque para la construcción de NHibernate DTO
- 18. Mejor enfoque funcional para Y a través de una lista
- 19. 2 técnicas para incluir archivos en una distribución de Python: ¿cuál es mejor?
- 20. inicios de sesión Dyango para múltiples usuarios: ¿el mejor enfoque?
- 21. Incluir funciones personalizadas de usuario Mejores prácticas en Symfony2
- 22. Mejor enfoque para claves primarias de varios inquilinos
- 23. ¿El mejor enfoque para una aplicación de MDI en WPF?
- 24. Eficiencia para incluir archivos de funciones (en PHP)
- 25. I18N de Django con aplicaciones de terceros
- 26. Incluir archivos .css en asp.net
- 27. ¿Cuál es el mejor enfoque para usar JasperReports?
- 28. ¿Puedo incluir un archivo de configuración opcional en Symfony2?
- 29. Mejor enfoque para programar reglas empresariales/matemáticas altamente complejas
- 30. Mejor enfoque con clases dinámicas usando Python globals()
Esta es la forma correcta de hacerlo. Si una biblioteca no sigue ninguna convención de nombres, le sugiero que empiece a usar el compositor ([repo] (https://github.com/composer/composer), [symfony] (https://github.com/symfony/symfony). -estándar)). Permite el mapeo de cualquier biblioteca, haciendo que la carga automática sea posible incluso para aquellas bibliotecas que no sigan la convención. – gilden