Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Symfony2: Segundos pasos

Symfony2: Segundos pasos

Presentación para Seminarios TheEvnt: Symfony2 por César Suárez Ortega

César Suárez Ortega

November 25, 2011
Tweet

More Decks by César Suárez Ortega

Other Decks in Programming

Transcript

  1. Controladores • Reciben todas las peticiones. • “Arrancan” Symfony2. •

    Puede haber varios que carguen distintas configuraciones. • Por defecto hay 2: • Para producción. • Para desarrollo.
  2. Web Debug Bar • Version de Symfony • Detalles de

    PHP • Profiling token • Acción ejecutada • Tiempo de carga • Memoria consumida • Detalles sobre seguridad • Consultas ejecutadas
  3. Consola de Symfony2 • php app/console * • Listar comandos:

    php app/console list • Tareas comunes desde consola. • Generadores automáticos del código. • Gestión de la base de datos. • Ayuda en la depuración.
  4. Greatest hits • php app/console cache:clear • php app/console assets:install

    • php app/console router:debug • php app/console generate:* (lo veremos luego) • php app/console doctrine:* (lo veremos luego)
  5. Doctrine 2 • Se divide en 3 componentes independientes: •

    Doctrine Common • Doctrine DBAL (incluye Common) • Doctrine ORM (incluye DBAL + Common) • No tiene nada que ver con “Doctrine 1” • Reescrito totalmente. • No es ActiveRecord. • Pierde los Behaviors
  6. Doctrine2: conceptos básicos • Entity • Objeto PHP ligero “normal”

    que equivale a una entidad. • Los atributos del objeto son los campos en la BD. • Los atributos deben estar encapsulados. • Puede contener otros métodos. • EntityManager • “Punto de acceso” único del ORM. • Gestión de la persistencia de objetos. • Ejecución de consultas para obtener objetos. • Patrón de diseño “Unit of Work”.
  7. Doctrine2 & Symfony2 • Doctrine2 viene por defecto incluido en

    Symfony2 (de momento). • Es un bundle más. • Doctrine2Bundle añade: • Definir Entities usando anotaciones. • Utilidades por línea de comandos.
  8. php app/console generate:bundle • Bundle namespace • TheEvnt/LibraryBundle • Bundle

    name • TheEvntLibraryBundle (default) • Target directory: • /var/www/Symfony/src • Configuration format • Annotation • Do you want to generate the whole directory structure • No • Do you confirm generation • Yes • Confirm automatic update of your Kernel • Yes • Confirm automatic update of the Routing • Yes
  9. DQL • Lenguaje de consulta creado para Doctrine • Casi

    igual que SQL • Las entidades son clases • Los campos son atributos • Devuelven Entities
  10. Doctrine Query Builder • Manera alternativa para crear consultas. •

    Menos flexible que DQL. • Más legible que DQL. • Se usa un objeto QueryBuilder asociado a una Entity. • Implementa una interfaz fluida.
  11. LifeCycle Callbacks disponibles • preRemove • postRemove • prePersist •

    postPersist • preUpdate • postUpdate • postLoad • loadClassMetadata
  12. Formularios + Symfony2 • Symfony2 tiene un componente para formularios.

    • Se crean mediante clases. • Totalmente distinto a Symfony 1.X. • Se integran con las Entities de Doctrine2. • Las clases de formularios van en la carpeta Forms de un bundle. • Helpers Twig para renderizar formularios.
  13. Validadores de datos • Se pueden definir en las Entities

    de Doctrine2 mediante anotaciones. • Se integran con los formularios. • Ejecutan los validadores. • Muestran los mensajes de error.
  14. Bundles de terceros interesantes • SonataAdminBundle // WhiteOctoberAdminBundle • FOSRestBundle

    • FOSFacebookBundle • PagerFanta • PropelBundle • DoctrineMongoDBBundle • StofDoctrineExtensionsBundle
  15. Tests unitarios y funcionales • Tests unitarios: PHPUnit (Bye Lime!)

    • Tests funcionales: • Cliente que simula peticiones. • HTML Crawler.