Flag of Ukraine
SymfonyCasts stands united with the people of Ukraine

Configuración del Proyecto y el Plan

Video not working?

It looks like your browser may not support the H264 codec. If you're using Linux, try a different browser or try installing the gstreamer0.10-ffmpeg gstreamer0.10-plugins-good packages.

Thanks! This saves us from needing to use Flash or encode videos in multiple formats. And that let's us get back to making more videos :). But as always, please feel free to message us.

¡Hola amigos! Si eres como yo, probablemente tienes un proyecto Symfony 5 - o 10 - por ahí esperando a ser actualizado a Symfony 6. Bueno... ¡has venido al lugar correcto! ¡Eso es exactamente lo que vamos a hacer en este tutorial! Pero, ¡más que eso! Se trata de una actualización especialmente interesante, porque también implica la actualización de nuestro código para utilizar PHP 8. Y eso incluye una transformación del uso de anotaciones a atributos de PHP 8. Necesito encontrar mi monóculo, porque nos estamos poniendo elegantes. También incluye varias otras características de PHP 8, que realmente te van a gustar. Además, por primera vez, vamos a utilizar una herramienta llamada "Rector" para automatizar todo lo posible. Y... porque no puedo evitarlo, descubriremos nuevas y bonitas características de Symfony 6 por el camino.

Poniendo en Marcha el Proyecto

¡Muy bien! Para empezar esta fiesta de la actualización, deberías codificar conmigo. Descarga el código del curso desde esta página y descomprímelo para encontrar un directorio start/con el mismo código que ves aquí. Sigue este archivo README.md para ver todos los detalles de la configuración. Ya he seguido la mayor parte de estos pasos... pero todavía tengo que construir mis activos de Webpack Encore e iniciar un servidor web. Así que vamos a hacerlo

En mi terminal (esto ya está dentro del proyecto), ejecuta

yarn install

o

npm install

para descargar los paquetes de Node. Quiero que esto se ejecute correctamente porque vamos a actualizar algunas de nuestras herramientas JavaScript un poco más tarde.

Luego ejecuta

yarn watch

o

npm run watch

para construir los activos del frontend... y luego observa los cambios.

Para el último paso: abre una nueva pestaña de terminal y pon en marcha un servidor web local. Voy a utilizar el servidor Symfony de forma normal ejecutando:

symfony serve -d

Y... ¡impresionante! Eso inicia un nuevo servidor web en https://127.0.0.1:8000. Haré clic en él y diré... ¡"Hola" a Cauldron Overflow! ¡Mi viejo amigo! Este es el sitio que hemos estado construyendo a lo largo de nuestra serie Symfony 5. Y si compruebas su archivo composer.json... y buscas aquí abajo cosas de Symfony... whoa... es viejo. Todas las librerías principales de Symfony son de la versión "5.0". Eso fue hace años. ¡Era tan joven entonces!

El Plan

Esta es nuestra estrategia de actualización. Primer paso: vamos a actualizar nuestro proyecto a Symfony 5.4. Esto es seguro porque Symfony no incluye ninguna ruptura de compatibilidad hacia atrás en la actualización de versiones menores. Así que cada vez que actualices sólo este número intermedio -llamado número "menor", como 5.0 a 5.4- siempre será seguro.

Segundo paso: una vez que estemos en Symfony 5.4, para preparar nuestro código para Symfony 6, todo lo que tenemos que hacer es buscar y arreglar todas las depreciaciones de nuestro código. Una vez que las hayamos arreglado, será seguro pasar a Symfony 6. Para encontrar esas depreciaciones, vamos a utilizar algunas herramientas, como "Rector" para actualizar partes de nuestro código, el nuevo sistema de actualización de recetas y el probado "informe de depreciaciones" de Symfony.

Después de todo eso, una vez que tengamos un proyecto Symfony 5.4 sin depreciaciones... podemos simplemente "darle al interruptor" y actualizar a Symfony 6. ¡Fácil!

Y al final, cubriremos algunas nuevas características más que podrían gustarte ¿Estás listo? ¡Genial! Vamos a actualizar nuestro sitio a Symfony 5.4 a continuación.

Leave a comment!

What PHP libraries does this tutorial use?

// composer.json
{
    "require": {
        "php": "^8.0.2",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "babdev/pagerfanta-bundle": "^3.6", // v3.6.1
        "composer/package-versions-deprecated": "^1.11", // 1.11.99.5
        "doctrine/annotations": "^1.13", // 1.13.2
        "doctrine/dbal": "^3.3", // 3.3.5
        "doctrine/doctrine-bundle": "^2.0", // 2.6.2
        "doctrine/doctrine-migrations-bundle": "^3.2", // 3.2.2
        "doctrine/orm": "^2.0", // 2.11.2
        "knplabs/knp-markdown-bundle": "^1.8", // 1.10.0
        "knplabs/knp-time-bundle": "^1.18", // v1.18.0
        "pagerfanta/doctrine-orm-adapter": "^3.6", // v3.6.1
        "pagerfanta/twig": "^3.6", // v3.6.1
        "sensio/framework-extra-bundle": "^6.0", // v6.2.6
        "sentry/sentry-symfony": "^4.0", // 4.2.8
        "stof/doctrine-extensions-bundle": "^1.5", // v1.7.0
        "symfony/asset": "6.0.*", // v6.0.7
        "symfony/console": "6.0.*", // v6.0.7
        "symfony/dotenv": "6.0.*", // v6.0.5
        "symfony/flex": "^2.1", // v2.1.7
        "symfony/form": "6.0.*", // v6.0.7
        "symfony/framework-bundle": "6.0.*", // v6.0.7
        "symfony/mailer": "6.0.*", // v6.0.5
        "symfony/monolog-bundle": "^3.0", // v3.7.1
        "symfony/property-access": "6.0.*", // v6.0.7
        "symfony/property-info": "6.0.*", // v6.0.7
        "symfony/proxy-manager-bridge": "6.0.*", // v6.0.6
        "symfony/routing": "6.0.*", // v6.0.5
        "symfony/runtime": "6.0.*", // v6.0.7
        "symfony/security-bundle": "6.0.*", // v6.0.5
        "symfony/serializer": "6.0.*", // v6.0.7
        "symfony/stopwatch": "6.0.*", // v6.0.5
        "symfony/twig-bundle": "6.0.*", // v6.0.3
        "symfony/ux-chartjs": "^2.0", // v2.1.0
        "symfony/validator": "6.0.*", // v6.0.7
        "symfony/webpack-encore-bundle": "^1.7", // v1.14.0
        "symfony/yaml": "6.0.*", // v6.0.3
        "symfonycasts/verify-email-bundle": "^1.7", // v1.10.0
        "twig/extra-bundle": "^2.12|^3.0", // v3.3.8
        "twig/string-extra": "^3.3", // v3.3.5
        "twig/twig": "^2.12|^3.0" // v3.3.10
    },
    "require-dev": {
        "doctrine/doctrine-fixtures-bundle": "^3.4", // 3.4.1
        "phpunit/phpunit": "^9.5", // 9.5.20
        "rector/rector": "^0.12.17", // 0.12.20
        "symfony/debug-bundle": "6.0.*", // v6.0.3
        "symfony/maker-bundle": "^1.15", // v1.38.0
        "symfony/var-dumper": "6.0.*", // v6.0.6
        "symfony/web-profiler-bundle": "6.0.*", // v6.0.6
        "zenstruck/foundry": "^1.16" // v1.18.0
    }
}