2012-04-03 8 views
15

Estoy creando una clase que tendrá un método público, que devuelve un valor indexado por un parámetro. Tengo un solo paquete en este momento. Los directorios dentro del paquete actualmente tengo son:Symfony 2 - ¿Dónde debería poner una clase de utilidad?

/Controller 
/DataFixtures 
/DependencyInjection 
/Document 
/Entity 
/Resources 
/Tests 

¿Cuál es la convención para la colocación de una clase como esta?

+0

Eso depende. Normalmente comienzas escribiendo una prueba que falla primero. ¿Puedes compartir el código de tu prueba? Eso a menudo es útil para ubicar el lugar correcto de una clase. – hakre

+0

@hakre Gracias por el consejo. Me encantaría comenzar a adoptar TDD, pero todavía no estoy allí. Le daré una oportunidad de batir uno. Como este no es un controlador, ¿dónde puedo pasar la prueba? ¿Acabo de ponerlo en el directorio de Pruebas? – gview

Respuesta

8

Su pregunta es un poco subjetiva, pero de acuerdo con lo que se describe en Bundle Structure and Best Practices, un paquete es solo código de espacio de nombres. Si la clase de utilidad es de primer grado, ¿por qué no la coloca en el directorio raíz del paquete?

Namespace Bundle\HelloBundle; 

Class Utility { 
    public static function returnIndexedValueByParameter($parameter) { 
     ... 
    } 
} 

Nombre del archivo:

Bundle/HelloBundle/Utility.php 
+0

Gracias por la sugerencia. Decidí crear un directorio en el paquete llamado Utility y pegarlo allí. Esa idea fue sugerida haciendo una lectura rápida del http://symfony.com/doc/current/book/testing.html doc. En una pregunta relacionada, he visto una discusión sobre el uso de un directorio "Modelo". Tenemos algunos modelos híbridos de ORM/MongoDB donde planeamos persistir los datos tanto en mysql como en una colección de Doctrine. En su opinión, ¿sería "Modelo" el lugar para poner estos modelos híbridos? – gview

+0

Ah, y por favor, suelta el enlace a la pregunta relacionada, a menudo es útil para reticular las preguntas. – hakre

+0

perdón por ese último punto, no te estoy siguiendo ... ¿de qué pregunta relacionada estamos hablando? – gview

Cuestiones relacionadas