2011-11-15 8 views
6

Soy un novato en Symfony2 y no puedo entender dónde debo incluirlo con mis funciones personalizadas de proyectos cruzados (por ejemplo, array_merge_overwrite, array_last, etc.)? Uso ambos tipos de aplicaciones: web (MVC) y consola (extiende ContainerAwareCommand).Incluir funciones personalizadas de usuario Mejores prácticas en Symfony2

¿O hay otra "manera correcta" para esto?

+1

Pregunta similar con buena respuesta [Funciones globales de Symfony2] (http://stackoverflow.com/questions/10336401/symfony2-global-functions). –

Respuesta

7

Cree un service y coloque su funcionalidad común en él. Por ejemplo, puede ponerle el nombre ArrayService y registrarlo en el contenedor como array.service. A continuación, puede acceder a este servicio desde los controladores a través de

$this->get('array.service'); 

y de comandos a través de

$this->getContainer()->get('array.service'); 

Por lo tanto, su código será algo como esto:

$element = $this->get('array.service')->last($array); // or ->arrayLast($array) 

Si necesita la misma funcionalidad en varios proyectos, haga un paquete con ese servicio y agréguelo al archivo deps de cada proyecto. Luego se instalará cuando ejecute el script bin/vendors install.

0

Puede convertir sus funciones a métodos estáticos de alguna clase para que sean autocargables. O ... bueno ... Colóquelos donde desee y requiera() desde donde los necesita cada vez.

+0

Si lo entiendo correctamente, Symfony no proporciona una solución para el problema, y ​​debería usar ** require ** cada forma/script que uso Symfony, ¿es así? – MingalevME

+0

@MingalevME Sí, si todavía está en la programación de procedimientos en 2011. Intente cambiar a OOP. –

Cuestiones relacionadas