Usuario:ManuelRomero/DAW/Symfony

FrameWork

 * Programa tus programas, no tus herramientas
 * Automatiza tareas comunes, permitiendonos centrarnos y dedicar el esfuerzo al desarrollo de la aplicación concreta
 * Nos ayuda a centrarnos en la aplicación, simplificando tareas comunes para diferentes aplicaciones
 * Establecemos patrones de desarrollo y diseño, facilitanto el posterior mantenimiento y crecimiento de la aplicación
 * Automa

Symfony

 * Sigue el patrón MVC

Separa el desarrollo/programación

http://librosweb.es/symfony/capitulo_1/symfony_en_pocas_palabras.html
 * 1) Lógica de negocio
 * 2) lógica de servidor
 * 3) lógica de la aplicación web

Características de Synfony

 * 1) Contienen herramienta que generan código
 * 2) está basado en pruebas del tipo text-driven development
 * 3) contiene una barra de depuración web
 * 4) tiene una interfaz de línea de comandos para automatizar instalación de aplicaciones
 * 5) Se pueden realizar cambios ad-hot
 * 6) Log en detalle

Referencias

 * https://groups.google.com/forum/#!forum/symfony-es
 * Foros de symfony http://forum.symfony-project.org/
 * listas de correo http://groups.google.com/group/symfony-es
 * Canal IRC irc://irc.freenode.net/symfony

Conceptos básicos

 * Se requieren conocimientos de programación en PHP (versión mínima 5.2.4).
 * Conocimientos de OOPç
 * clase, objeto, método herencia http://www.php.net/manual/es/language.oop5.basic.php.
 * Métodos mágicos del tipo __nombreMetodo. Métodos comunes a todos los objetos que tie pueden sobreescribir y mantienen una finalidad que permite unificarlos para cualquier tipo de objeto. Por ejemplo __toString nos dará una cadena de caracteres que identifique al objeto; los objetos son de diferente tipo cada uno lo hará de una manera, pero en cualquier objeto sabemos que existe es método y nos intentará dar información en forma de cadena de caracteres.

http://www.php.net/manual/es/language.oop5.magic.php Symfony nos ofrece una interfaz que permite que trabajemos con objetos y clases aunque en realidad por detrás haya registros y tablas. O sea que traduce la lógica de objetos a lógica relacional. Entre las herramientas open source que implementan esta funcionalidad Symfony soporta las dos más usadas Porpel http://www.propelorm.org y Doctrine http://www.doctrine-project.org
 * ORM Mapeo de Objeto a Relacional
 * RAD Rapid Application Designe
 * Empezar a desarrollar rápidamente usando lenguajes de scriping (php, python, ruby).
 * El cliente ve el prototipo funcionando y participa de posibles cambios.
 * DRY (Don't Repeat Yourself). Se intenta no repetir el código, se refactoriza en un único lugar. Princip.
 * TDD (Test-driven development) el desarrollo a veces está basado en pruebas programas que hay que escribir antes que la aplicación.

Los métodos deben de ser lo más sencillos y directos posibles KISS (Keep it Simple, Stupid).
 * YAML http://www.yaml.org/. Estandar para serializar datos. Ain't Markup Language.
 * Es un lenguaje sencillo que pemite describir datos como XML, pero de una forma más sencilla.
 * Utiliza la tabulación para especificar la estructura


 * Otra forma de describirlo