Symfony

Primera página y controlador

Primera página y controlador Para crear nuestra primera página basta con crear un nuevo documento PHP // src/Controller/LuckyController.php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; class LuckyController { public function number() { $number = mt_rand(0, 100); return new Response( '<html><body>Lucky number: '.$number.'</body></html>' ); } } Y luego añadir en nuestro archivo config/routes.yaml la siguiente línea: app_lucky_number: path: /lucky/number controller: App\Controller\LuckyController::number Si entramos en localhost:8000/lucky/number veremos el resultado. Anotaciones Para evitar tener que poner cada ruta en este archivo manualmente, usaremos las anotaciones. Para instalar estas (añadir la dependencia) desde el directorio del proyecto en la consola ejecutamos: composer require annotations Con esto ya podremos eliminar las líneas que habíamos puesto en routes.yaml // src/Controller/LuckyController.php namespace App\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class LuckyController { /** * @Route("/lucky/number") * @return Response */ public function number() { $number = mt_rand(0, 100); return new Response( '<html><body>Lucky number: '.$number.'</body></html>' ); } } Si entramos en localhost:8000/lucky/number veremos como todo sigue funcionando de la misma manera. Una vez en este punto al intentar desplegar en Heroku me dio problemas: Script cache:clear returned with error code 255 !! PHP Fatal error: Uncaught RuntimeException: APP_ENV environment variable is not defined. You need to define environment variables for configuration or add "symfony/dotenv" as a Composer dependency to load variables from a .env file. in /tmp/build_28bf132bc15e00a1674b37dec1340dc6/CrisKrus-My-Symfony-Project-f31cfde/bin/console:20 !! Stack trace: !! #0 {main} !! thrown in /tmp/build_28bf132bc15e00a1674b37dec1340dc6/CrisKrus-My-Symfony-Project-f31cfde/bin/console on line 20 !! ! Push rejected, failed to compile PHP app. ! Push failed Para solucionar este problema basta con seguir las instrucciones del error, las cuales nos indica que con añadir la dependencia de “dotenv” con Composer, estando dentro del directorio del proyecto. composer require dotenv Otro problema mas, si nos dirigimos a la aplicación una vez ya tenemos todo en master correctamente, veremos como no hay nada desplegado realmente. Eso es porque no hemos indicado que directorio es el que queremos que use, se lo tenemos que indicar de la siguiente forma. Creando el archivo Procfile indicando al servidor de Heroku que carpeta, public en nuestro caso. web: vendor/bin/heroku-php-apache2 public/ Añadir framework-extra-bundle dependencia. *Esto no se hasta que punto es realmente necesario. composer require sensio/framework-extra-bundle Referencias Symfony, primera página Symfony, extra bundle dependencia Symfony, crear procfile

Configurar el IDE

Configurar el IDE En este caso usaré para el desarrollo el PhpStorm, instalaremos el plug-in de Symfony desde File > Settings > Plugins > Browse repositories… Donde lo buscaremos e instalaremos. Una vez instalados lo configuraremos para nuestro proyecto File > Settings > Languages & Frameworks > PHP > Symfony Marcamos Enable Plugin for this Project cerramos el proyecto y lo volvemos a abrir. Tras ello podemos configurar el estilo del código de acuerdo con Symfony, si queremos File > Settings > Editor > Code Style > PHP > Set from… > Predefined Style > Symfony Referencias Jetbrains, instalar add-ons

Desplegar en Heroku

Desplegar en Heroku Tras subir el proyecto a Github, podremos desplegarlo en Heroku de manera bastante sencilla. Entramos a nuestra cuenta de Heroku y creamos una nueva aplicación. Le damos un nombre y en la parte de desplegar deployment lo conectamos con nuestra cuenta de Github. Buscamos nuestro proyecto y lo seleccionamos. A continuación, para evitarnos tener que desplegar cada versión a mano y dado que trabajaremos desde la rama develop en nuestro repositorio, marcamos la opción de Enable Automatic Deploys haciendo que con cada push a master, se despliegue automáticamente. En caso de que sea necesaria una base de datos, vamos a la pestaña Resources luego en el apartado Add-ons y pulsamos sobre Find more add-ons donde veremos los distintos add-ons disponibles, entre ellos bases de datos como MongoDB y PostgreSQL.

Iniciar el proyecto Symfony

Iniciar el proyecto Symfony Estando en el directorio en el que queremos crear el proyecto ejecutamos composer create-project symfony/skeleton my_project Siendo my_project el nombre del proyecto. Una vez descargado todo, se crea el árbol de directorios y nos indica que debemos entrar en el directorio del proyecto y ejecutar php -S 127.0.0.1:8000 public/index.php Con ello nuestro terminal quedara “inutilizado” ejecutando el proyecto, para cerrarla bastara con pulsar la combinación de teclas Ctrl + c Tras ello si vamos a nuestro explorador web y entramos en http://localhost:8000/ veremos la pagina de inicio de nuestro proyecto. NOTA: Se puede usar cualquier otro puerto si este se encuentra en uso, en mi caso el 8000 no hay problema. Referencias Symfont, configuracion symfony Curso en video, primeros pasos con symfony

Instalar PHP

Instalar PHP Instalar PHP y algún extra sudo apt-get install php sudo apt-get install php-xdebug sudo apt-get install php-intl Comprobar la versión de PHP instalada php -v Instalar los estándares del estilo de código y comentarios que sigue Symfony, estos son los PSR-0 PSR-1 PSR-2 PSR-4 de PHP. Para esto instalaremos php-codesniffer sudo apt-get install php-codesniffer Instalar estándares de código Con esto ya tendremos donde instalar estándares de desarrollo, en mi caso: /usr/share/php/PHP/CodeSniffer/src/Standards Nos moveremos hasta el para posteriormente incluir los estándares. cd /usr/share/php/PHP/CodeSniffer/src/Standards *****En caso de no tener instalado git en el sistema lo instalamos para poder clonar el repositorio. sudo apt-get install git Si buscamos “symfony coding standard” en Google, en el primer resultado de Github podremos clonarlo: git clone git://github.com/djoos/Symfony-coding-standard.git AVISO: en el paso tres nos colocamos en el repositorio “/usr/share/php/PHP/CodeSniffer/src/Standards” debemos seguir en él. Añadir el repositorio clonado a las rutas de codesniffer, especificaremos la ruta absoluta. sudo phpcs --config-set installed_paths /usr/share/php/PHP/CodeSniffer/src/Standards/Symfony-coding-standard/ Comprobamos que ha sido instalado correctamente phpcs -i En la consola tendría que aparecer Symfony entre otros. Referencias David Morales, instalacion de PHP David Joos, standares