Introducción al desarrollo con

eugeniaperez.es

Comunicación HTTP

Interacción cliente - servidor

eugeniaperez.es

Primera aplicación

Comenzaremos desarrollando una aplicación Symfony que reciba una edad por la URL y te muestre el año de nacimiento.

eugeniaperez.es

http://localhost/test_project/web/calculator/20

Primera aplicación

Bundles

Todo código debe residir en un bundle.

Es un módulo reutilizable dentro de la aplicación.

Sólo debes poner en un bundle lógica que se supone que puede ser reutilizable en otra aplicación.

eugeniaperez.es

InvoiceBundle, UserBundle, etc.

Primera aplicación Symfony

Estructura de una aplicación Symfony: 

  • app/Resources: almacena las vistas y archivos de internacionalización.
  • app/config:  configuración del entorno.
  • app/logs: ficheros de log.
  • src/AppBundle: almacena los controladores y rutas de Symfony, modelo de dominio y la lógica de negocio.
  • vendor: dependencias de la aplicación. 
  • web: almacena todos los recursos estáticos de la aplicación,  imágenes, hojas de estilo, JavaScript, etc.

 

 

 

eugeniaperez.es

Primera aplicación Symfony

Rutas

eugeniaperez.es

La definición de rutas en el archivo app/config/rounting.yml.

Las dos maneras de definir las rutas:

  • Explícitamente en este archivo.
  • Mediante anotaciones. 

Primera aplicación Symfony

                Rutas

eugeniaperez.es

app:
    path: /calculator/{age}
    defaults: {_controller: AppBundle:Calculator:index}

Por ejemplo, dentro app/config/rounting.yml

Maneja la petición de tipo GET a la ruta: /controlador/{age}

Primera aplicación Symfony

                Rutas

eugeniaperez.es

class CalculatorController extends Controller {

    public function indexAction($age) {
        $currentYear = date('Y');

        return new Response('<html><body>Current year: ' . $currentYear . 
		'<br/>Year of birth: ' . ($currentYear - $age) . 
                '</body></html>');
    }
}

La clase Controlador que recibe la edad:

Primera aplicación Symfony

Plantillas y vistas

eugeniaperez.es

Anteriormente se retorna código HTML para ser mostrado al usuario. ¡No es mantenible!

Lo mejor es definir vistas en ficheros independientes, y desde los controladores enviar redirecciones (método render) con los datos a pasar (array asociativo).

Primera aplicación Symfony

                Plantillas y vistas

eugeniaperez.es

La plantilla se guarda en:

 app > Resources > views > calculator

{% extends 'base.html.twig' %}

{% block body %}
    Year of birth: {{year}}
{% endblock %}

Primera aplicación Symfony

El directorio web

eugeniaperez.es

Almacena recursos estáticos:

  • JavaScript,
  • CSS,
  • imágenes,
  • front controllers: se ejecutan para lanzar e inicializar una aplicación Symfony.

Primera aplicación Symfony

                El directorio web

eugeniaperez.es

Con el front controller la URL con respecto a PHP tradicionales. En el ejemplo anterior:

http://localhost/test_project/web/app_dev.php/calculator/20

Donde app_dev.php es un front controller.

Si queremos omitir el front controller, deberíamos trabajar en la implementación de redirecciones, mediante el módulo mod_rewrite de Apache.

Primera aplicación Symfony

Entornos de producción

eugeniaperez.es

Se definen por defecto 3 entornos: dev, test y prod, que se corresponden con desarrollo, pruebas y producción.

Es muy necesario distinguir entre dichos entornos...

Modo devhttp://localhost/test_project/web/app_dev.php/calculator/20

Modo prodhttp://localhost/test_project/web/app.php/calculator/20