Browse Source

Switch to symfony 5.1 and preloading (#5679)

* Switch to symfony 5.1 and preloading

* Update dependencies

* Remove bootstrap file and useless env
Jérémy Derussé 5 years ago
parent
commit
7cdb4396f5

+ 6 - 5
frameworks/PHP/symfony/.env

@@ -1,5 +1,5 @@
 # In all environments, the following files are loaded if they exist,
 # In all environments, the following files are loaded if they exist,
-# the later taking precedence over the former:
+# the latter taking precedence over the former:
 #
 #
 #  * .env                contains default values for the environment variables needed by the app
 #  * .env                contains default values for the environment variables needed by the app
 #  * .env.local          uncommitted file with local overrides
 #  * .env.local          uncommitted file with local overrides
@@ -11,18 +11,19 @@
 # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
 # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
 #
 #
 # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
 # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
-# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
+# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
 
 
 ###> symfony/framework-bundle ###
 ###> symfony/framework-bundle ###
 APP_ENV=dev
 APP_ENV=dev
 APP_SECRET=00708cd4c2a9090792f7bd68b094983d
 APP_SECRET=00708cd4c2a9090792f7bd68b094983d
-#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
-#TRUSTED_HOSTS='^localhost|example\.com$'
+#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
+#TRUSTED_HOSTS='^(localhost|example\.com)$'
 ###< symfony/framework-bundle ###
 ###< symfony/framework-bundle ###
 
 
 ###> doctrine/doctrine-bundle ###
 ###> doctrine/doctrine-bundle ###
 # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
 # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
 # For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
 # For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
-# Configure your db driver and server_version in config/packages/doctrine.yaml
 DATABASE_URL=mysql://benchmarkdbuser:benchmarkdbpass@tfb-database:3306/hello_world
 DATABASE_URL=mysql://benchmarkdbuser:benchmarkdbpass@tfb-database:3306/hello_world
+# For a PostgreSQL database, use: "postgresql://db_user:[email protected]:5432/db_name?serverVersion=11&charset=utf8"
+# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
 ###< doctrine/doctrine-bundle ###
 ###< doctrine/doctrine-bundle ###

+ 1 - 0
frameworks/PHP/symfony/.gitignore

@@ -2,6 +2,7 @@
 /.env.local
 /.env.local
 /.env.local.php
 /.env.local.php
 /.env.*.local
 /.env.*.local
+/config/secrets/prod/prod.decrypt.private.php
 /public/bundles/
 /public/bundles/
 /var/
 /var/
 /vendor/
 /vendor/

+ 7 - 6
frameworks/PHP/symfony/bin/console

@@ -4,18 +4,19 @@
 use App\Kernel;
 use App\Kernel;
 use Symfony\Bundle\FrameworkBundle\Console\Application;
 use Symfony\Bundle\FrameworkBundle\Console\Application;
 use Symfony\Component\Console\Input\ArgvInput;
 use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Debug\Debug;
+use Symfony\Component\Dotenv\Dotenv;
+use Symfony\Component\ErrorHandler\Debug;
 
 
-if (false === in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
-    echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.\PHP_SAPI.' SAPI'.\PHP_EOL;
+if (!in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
+    echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.PHP_SAPI.' SAPI'.PHP_EOL;
 }
 }
 
 
 set_time_limit(0);
 set_time_limit(0);
 
 
 require dirname(__DIR__).'/vendor/autoload.php';
 require dirname(__DIR__).'/vendor/autoload.php';
 
 
-if (!class_exists(Application::class)) {
-    throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
+if (!class_exists(Application::class) || !class_exists(Dotenv::class)) {
+    throw new LogicException('You need to add "symfony/framework-bundle" and "symfony/dotenv" as Composer dependencies.');
 }
 }
 
 
 $input = new ArgvInput();
 $input = new ArgvInput();
@@ -27,7 +28,7 @@ if ($input->hasParameterOption('--no-debug', true)) {
     putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
     putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
 }
 }
 
 
-require dirname(__DIR__).'/config/bootstrap.php';
+(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
 
 
 if ($_SERVER['APP_DEBUG']) {
 if ($_SERVER['APP_DEBUG']) {
     umask(0000);
     umask(0000);

+ 9 - 9
frameworks/PHP/symfony/composer.json

@@ -6,16 +6,16 @@
         "ext-ctype": "*",
         "ext-ctype": "*",
         "ext-iconv": "*",
         "ext-iconv": "*",
         "ext-mbstring": "*",
         "ext-mbstring": "*",
-        "symfony/console": "5.0.*",
-        "symfony/dotenv": "5.0.*",
-        "symfony/flex": "^1.3.1",
-        "symfony/framework-bundle": "5.0.*",
+        "symfony/console": "5.1.*",
+        "symfony/dotenv": "5.1.*",
+        "symfony/flex": "^1.6.0",
+        "symfony/framework-bundle": "5.1.*",
         "symfony/orm-pack": "^1.0",
         "symfony/orm-pack": "^1.0",
-        "symfony/twig-bundle": "5.0.*",
-        "symfony/yaml": "5.0.*"
-    },
-    "require-dev": {
+        "symfony/twig-bundle": "5.1.*",
+        "symfony/yaml": "5.1.*"
     },
     },
+    "minimum-stability": "dev",
+    "prefer-stable": true,
     "config": {
     "config": {
         "platform": {
         "platform": {
             "php": "7.4"
             "php": "7.4"
@@ -66,7 +66,7 @@
     "extra": {
     "extra": {
         "symfony": {
         "symfony": {
             "allow-contrib": false,
             "allow-contrib": false,
-            "require": "5.0.*"
+            "require": "5.1.*"
         }
         }
     }
     }
 }
 }

File diff suppressed because it is too large
+ 431 - 108
frameworks/PHP/symfony/composer.lock


+ 0 - 23
frameworks/PHP/symfony/config/bootstrap.php

@@ -1,23 +0,0 @@
-<?php
-
-use Symfony\Component\Dotenv\Dotenv;
-
-require dirname(__DIR__).'/vendor/autoload.php';
-
-// Load cached env vars if the .env.local.php file exists
-// Run "composer dump-env prod" to create it (requires symfony/flex >=1.2)
-if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) {
-    foreach ($env as $k => $v) {
-        $_ENV[$k] = $_ENV[$k] ?? (isset($_SERVER[$k]) && 0 !== strpos($k, 'HTTP_') ? $_SERVER[$k] : $v);
-    }
-} elseif (!class_exists(Dotenv::class)) {
-    throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
-} else {
-    // load all the .env files
-    (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env');
-}
-
-$_SERVER += $_ENV;
-$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev';
-$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
-$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';

+ 19 - 0
frameworks/PHP/symfony/config/packages/cache.yaml

@@ -0,0 +1,19 @@
+framework:
+    cache:
+        # Unique name of your app: used to compute stable namespaces for cache keys.
+        #prefix_seed: your_vendor_name/app_name
+
+        # The "app" cache stores to the filesystem by default.
+        # The data in this cache should persist between deploys.
+        # Other options include:
+
+        # Redis
+        #app: cache.adapter.redis
+        #default_redis_provider: redis://localhost
+
+        # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
+        #app: cache.adapter.apcu
+
+        # Namespaced pools use the above "app" backend by default
+        #pools:
+            #my.dedicated.cache: null

+ 0 - 1
frameworks/PHP/symfony/config/packages/framework.yaml

@@ -1,5 +1,4 @@
 framework:
 framework:
-    secret: '%env(APP_SECRET)%'
     #csrf_protection: true
     #csrf_protection: true
     #http_method_override: true
     #http_method_override: true
 
 

+ 4 - 11
frameworks/PHP/symfony/config/packages/prod/doctrine.yaml

@@ -2,18 +2,11 @@ doctrine:
     orm:
     orm:
         auto_generate_proxy_classes: false
         auto_generate_proxy_classes: false
         metadata_cache_driver:
         metadata_cache_driver:
-            type: service
-            id: doctrine.system_cache_provider
+            type: pool
+            pool: doctrine.system_cache_pool
         query_cache_driver:
         query_cache_driver:
-            type: service
-            id: doctrine.system_cache_provider
-
-services:
-    doctrine.system_cache_provider:
-        class: Symfony\Component\Cache\DoctrineProvider
-        public: false
-        arguments:
-            - '@doctrine.system_cache_pool'
+            type: pool
+            pool: doctrine.system_cache_pool
 
 
 framework:
 framework:
     cache:
     cache:

+ 4 - 11
frameworks/PHP/symfony/config/packages/swoole/doctrine.yaml

@@ -2,18 +2,11 @@ doctrine:
     orm:
     orm:
         auto_generate_proxy_classes: false
         auto_generate_proxy_classes: false
         metadata_cache_driver:
         metadata_cache_driver:
-            type: service
-            id: doctrine.system_cache_provider
+            type: pool
+            pool: doctrine.system_cache_pool
         query_cache_driver:
         query_cache_driver:
-            type: service
-            id: doctrine.system_cache_provider
-
-services:
-    doctrine.system_cache_provider:
-        class: Symfony\Component\Cache\DoctrineProvider
-        public: false
-        arguments:
-        - '@doctrine.system_cache_pool'
+            type: pool
+            pool: doctrine.system_cache_pool
 
 
 framework:
 framework:
     cache:
     cache:

+ 3 - 3
frameworks/PHP/symfony/config/packages/swoole/swoole.php

@@ -17,9 +17,9 @@ $container->loadFromExtension('swoole', [
             'entity_manager_handler' => false,
             'entity_manager_handler' => false,
         ],
         ],
         'settings' => [
         'settings' => [
-             'reactor_count' => swoole_cpu_num() * 2,
-             'worker_count' => swoole_cpu_num() * 2,
-             'task_worker_count' => swoole_cpu_num() * 2,
+            'reactor_count' => swoole_cpu_num() * 2,
+            'worker_count' => swoole_cpu_num() * 2,
+            'task_worker_count' => swoole_cpu_num() * 2,
 
 
             'log_file' => '/dev/null',
             'log_file' => '/dev/null',
             'log_level' => 'error',
             'log_level' => 'error',

+ 1 - 2
frameworks/PHP/symfony/config/packages/twig.yaml

@@ -1,4 +1,3 @@
 twig:
 twig:
     default_path: '%kernel.project_dir%/templates'
     default_path: '%kernel.project_dir%/templates'
-    debug: '%kernel.debug%'
-    strict_variables: '%kernel.debug%'
+    strict_variables: true

+ 4 - 0
frameworks/PHP/symfony/config/routes/annotations.yaml

@@ -1,3 +1,7 @@
 controllers:
 controllers:
     resource: ../../src/Controller/
     resource: ../../src/Controller/
     type: annotation
     type: annotation
+
+kernel:
+    resource: ../../src/Kernel.php
+    type: annotation

+ 1 - 3
frameworks/PHP/symfony/config/services.yaml

@@ -21,9 +21,7 @@ services:
     # as action arguments even if you don't extend any base controller class
     # as action arguments even if you don't extend any base controller class
     App\Controller\:
     App\Controller\:
         resource: '../src/Controller'
         resource: '../src/Controller'
-        # turn off ControllerArgumentLocators, must make controllers public
-        # tags: ['controller.service_arguments']
-        public: true
+        tags: ['controller.service_arguments']
 
 
     # add more service definitions when explicit configuration is needed
     # add more service definitions when explicit configuration is needed
     # please note that last definitions always *replace* previous ones
     # please note that last definitions always *replace* previous ones

+ 7 - 4
frameworks/PHP/symfony/public/index.php

@@ -1,10 +1,13 @@
 <?php
 <?php
 
 
 use App\Kernel;
 use App\Kernel;
-use Symfony\Component\Debug\Debug;
+use Symfony\Component\Dotenv\Dotenv;
+use Symfony\Component\ErrorHandler\Debug;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Request;
 
 
-require dirname(__DIR__).'/config/bootstrap.php';
+require dirname(__DIR__).'/vendor/autoload.php';
+
+(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
 
 
 if ($_SERVER['APP_DEBUG']) {
 if ($_SERVER['APP_DEBUG']) {
     umask(0000);
     umask(0000);
@@ -12,11 +15,11 @@ if ($_SERVER['APP_DEBUG']) {
     Debug::enable();
     Debug::enable();
 }
 }
 
 
-if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
+if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) {
     Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
     Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
 }
 }
 
 
-if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
+if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) {
     Request::setTrustedHosts([$trustedHosts]);
     Request::setTrustedHosts([$trustedHosts]);
 }
 }
 
 

+ 0 - 0
frameworks/PHP/symfony/src/Controller/.gitignore


+ 0 - 0
frameworks/PHP/symfony/src/Entity/.gitignore


+ 15 - 35
frameworks/PHP/symfony/src/Kernel.php

@@ -7,54 +7,34 @@ use App\Swoole\SrandStartHandler;
 use K911\Swoole\Server\RequestHandler\RequestHandlerInterface;
 use K911\Swoole\Server\RequestHandler\RequestHandlerInterface;
 use K911\Swoole\Server\WorkerHandler\WorkerStartHandlerInterface;
 use K911\Swoole\Server\WorkerHandler\WorkerStartHandlerInterface;
 use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
 use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
 use Symfony\Component\DependencyInjection\Reference;
 use Symfony\Component\DependencyInjection\Reference;
 use Symfony\Component\HttpKernel\Kernel as BaseKernel;
 use Symfony\Component\HttpKernel\Kernel as BaseKernel;
-use Symfony\Component\Routing\RouteCollectionBuilder;
+use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
 
 
 class Kernel extends BaseKernel implements CompilerPassInterface
 class Kernel extends BaseKernel implements CompilerPassInterface
 {
 {
     use MicroKernelTrait;
     use MicroKernelTrait;
 
 
-    private const CONFIG_EXTS = '.{php,xml,yaml,yml}';
-
-    public function registerBundles(): iterable
-    {
-        $contents = require $this->getProjectDir().'/config/bundles.php';
-        foreach ($contents as $class => $envs) {
-            if ($envs[$this->environment] ?? $envs['all'] ?? false) {
-                yield new $class();
-            }
-        }
-    }
-
-    public function getProjectDir(): string
+    protected function configureContainer(ContainerConfigurator $container): void
     {
     {
-        return \dirname(__DIR__);
+        $container->parameters()->set('container.dumper.inline_factories', true);
+        $container->parameters()->set('container.dumper.inline_class_loader', true);
+
+        $container->import('../config/{packages}/*.yaml');
+        $container->import('../config/{packages}/'.$this->environment.'/*.yaml');
+        $container->import('../config/{packages}/'.$this->environment.'/*.php');
+        $container->import('../config/{services}.yaml');
+        $container->import('../config/{services}_'.$this->environment.'.yaml');
     }
     }
 
 
-    protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
+    protected function configureRoutes(RoutingConfigurator $routes): void
     {
     {
-        $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php'));
-        $container->setParameter('container.dumper.inline_class_loader', true);
-        $confDir = $this->getProjectDir().'/config';
-
-        $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob');
-        $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');
-        $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob');
-        $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob');
-    }
-
-    protected function configureRoutes(RouteCollectionBuilder $routes): void
-    {
-        $confDir = $this->getProjectDir().'/config';
-
-        $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob');
-        $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob');
-        $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob');
+        $routes->import('../config/{routes}/'.$this->environment.'/*.yaml');
+        $routes->import('../config/{routes}/*.yaml');
+        $routes->import('../config/{routes}.yaml');
     }
     }
 
 
     public function process(ContainerBuilder $container)
     public function process(ContainerBuilder $container)

+ 0 - 0
frameworks/PHP/symfony/src/Repository/.gitignore


+ 3 - 3
frameworks/PHP/symfony/symfony-swoole.dockerfile

@@ -19,7 +19,7 @@ ADD ./composer.json ./composer.lock /symfony/
 RUN mkdir -m 777 -p /symfony/var/cache/swoole /symfony/var/log
 RUN mkdir -m 777 -p /symfony/var/cache/swoole /symfony/var/log
 RUN COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --no-scripts
 RUN COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --no-scripts
 ADD . /symfony
 ADD . /symfony
-RUN COMPOSER_ALLOW_SUPERUSER=1 composer require k911/swoole-bundle --no-scripts
+RUN COMPOSER_ALLOW_SUPERUSER=1 composer require "k911/swoole-bundle:^0.7.8" --no-scripts
 RUN COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload --no-dev --classmap-authoritative
 RUN COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload --no-dev --classmap-authoritative
 RUN COMPOSER_ALLOW_SUPERUSER=1 composer dump-env swoole
 RUN COMPOSER_ALLOW_SUPERUSER=1 composer dump-env swoole
 
 
@@ -27,8 +27,8 @@ RUN COMPOSER_ALLOW_SUPERUSER=1 composer dump-env swoole
 # see https://github.com/doctrine/dbal/issues/2315
 # see https://github.com/doctrine/dbal/issues/2315
 RUN sed -i '/PDO::ATTR_STATEMENT_CLASS/d' ./vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php
 RUN sed -i '/PDO::ATTR_STATEMENT_CLASS/d' ./vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php
 
 
-ENV APP_DEBUG=0 \
-    APP_ENV=swoole
+# Force debug=0 because env is not "prod"
+ENV APP_DEBUG=0
 
 
 RUN php bin/console cache:clear
 RUN php bin/console cache:clear
 RUN echo "opcache.preload=/symfony/var/cache/swoole/App_KernelSwooleContainer.preload.php" >> /usr/local/etc/php/php.ini
 RUN echo "opcache.preload=/symfony/var/cache/swoole/App_KernelSwooleContainer.preload.php" >> /usr/local/etc/php/php.ini

+ 70 - 54
frameworks/PHP/symfony/symfony.lock

@@ -5,31 +5,31 @@
             "repo": "github.com/symfony/recipes",
             "repo": "github.com/symfony/recipes",
             "branch": "master",
             "branch": "master",
             "version": "1.0",
             "version": "1.0",
-            "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672"
+            "ref": "a2759dd6123694c8d901d0ec80006e044c2e6457"
         },
         },
         "files": [
         "files": [
             "config/routes/annotations.yaml"
             "config/routes/annotations.yaml"
         ]
         ]
     },
     },
     "doctrine/cache": {
     "doctrine/cache": {
-        "version": "v1.8.0"
+        "version": "1.10.0"
     },
     },
     "doctrine/collections": {
     "doctrine/collections": {
-        "version": "v1.6.2"
+        "version": "1.6.4"
     },
     },
     "doctrine/common": {
     "doctrine/common": {
-        "version": "v2.10.0"
+        "version": "2.12.0"
     },
     },
     "doctrine/dbal": {
     "doctrine/dbal": {
-        "version": "v2.9.2"
+        "version": "2.10.2"
     },
     },
     "doctrine/doctrine-bundle": {
     "doctrine/doctrine-bundle": {
-        "version": "1.6",
+        "version": "2.0",
         "recipe": {
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "repo": "github.com/symfony/recipes",
             "branch": "master",
             "branch": "master",
-            "version": "1.6",
-            "ref": "5e476e8edf3fa8e7f045ad034f89bb464424f5c1"
+            "version": "2.0",
+            "ref": "a9f2463b9f73efe74482f831f03a204a41328555"
         },
         },
         "files": [
         "files": [
             "config/packages/doctrine.yaml",
             "config/packages/doctrine.yaml",
@@ -39,29 +39,32 @@
         ]
         ]
     },
     },
     "doctrine/event-manager": {
     "doctrine/event-manager": {
-        "version": "v1.0.0"
+        "version": "1.1.0"
     },
     },
     "doctrine/inflector": {
     "doctrine/inflector": {
-        "version": "v1.3.0"
+        "version": "1.3.1"
     },
     },
     "doctrine/instantiator": {
     "doctrine/instantiator": {
-        "version": "1.2.0"
+        "version": "1.3.0"
     },
     },
     "doctrine/lexer": {
     "doctrine/lexer": {
-        "version": "1.1.0"
+        "version": "1.2.0"
     },
     },
     "doctrine/orm": {
     "doctrine/orm": {
-        "version": "v2.6.3"
+        "version": "v2.7.2"
     },
     },
     "doctrine/persistence": {
     "doctrine/persistence": {
-        "version": "1.1.1"
+        "version": "1.3.7"
     },
     },
     "doctrine/reflection": {
     "doctrine/reflection": {
-        "version": "v1.0.0"
+        "version": "1.2.1"
     },
     },
     "jdorn/sql-formatter": {
     "jdorn/sql-formatter": {
         "version": "v1.2.17"
         "version": "v1.2.17"
     },
     },
+    "ocramius/package-versions": {
+        "version": "1.8.0"
+    },
     "php": {
     "php": {
         "version": "7.4"
         "version": "7.4"
     },
     },
@@ -75,53 +78,55 @@
         "version": "1.0.0"
         "version": "1.0.0"
     },
     },
     "psr/log": {
     "psr/log": {
-        "version": "1.1.0"
+        "version": "1.1.3"
     },
     },
     "symfony/cache": {
     "symfony/cache": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/cache-contracts": {
     "symfony/cache-contracts": {
-        "version": "v1.1.5"
+        "version": "v2.0.1"
     },
     },
     "symfony/config": {
     "symfony/config": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/console": {
     "symfony/console": {
-        "version": "3.3",
+        "version": "5.1",
         "recipe": {
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "repo": "github.com/symfony/recipes",
             "branch": "master",
             "branch": "master",
-            "version": "3.3",
-            "ref": "482d233eb8de91ebd042992077bbd5838858890c"
+            "version": "5.1",
+            "ref": "c6d02bdfba9da13c22157520e32a602dbee8a75c"
         },
         },
         "files": [
         "files": [
-            "bin/console",
-            "config/bootstrap.php"
+            "bin/console"
         ]
         ]
     },
     },
     "symfony/dependency-injection": {
     "symfony/dependency-injection": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
+    },
+    "symfony/deprecation-contracts": {
+        "version": "2.1.x-dev"
     },
     },
     "symfony/doctrine-bridge": {
     "symfony/doctrine-bridge": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/dotenv": {
     "symfony/dotenv": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/error-handler": {
     "symfony/error-handler": {
-        "version": "v5.0.0-beta2"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/event-dispatcher": {
     "symfony/event-dispatcher": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/event-dispatcher-contracts": {
     "symfony/event-dispatcher-contracts": {
-        "version": "v1.1.5"
+        "version": "v2.0.1"
     },
     },
     "symfony/filesystem": {
     "symfony/filesystem": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/finder": {
     "symfony/finder": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/flex": {
     "symfony/flex": {
         "version": "1.0",
         "version": "1.0",
@@ -129,25 +134,25 @@
             "repo": "github.com/symfony/recipes",
             "repo": "github.com/symfony/recipes",
             "branch": "master",
             "branch": "master",
             "version": "1.0",
             "version": "1.0",
-            "ref": "dc3fc2e0334a4137c47cfd5a3ececc601fa61a0b"
+            "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e"
         },
         },
         "files": [
         "files": [
             ".env"
             ".env"
         ]
         ]
     },
     },
     "symfony/framework-bundle": {
     "symfony/framework-bundle": {
-        "version": "4.2",
+        "version": "5.1",
         "recipe": {
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "repo": "github.com/symfony/recipes",
             "branch": "master",
             "branch": "master",
-            "version": "4.2",
-            "ref": "61ad963f28c091b8bb9449507654b9c7d8bbb53c"
+            "version": "5.1",
+            "ref": "37b4ec59eda3eb89705f21a0da7231862495ce0a"
         },
         },
         "files": [
         "files": [
-            "config/bootstrap.php",
             "config/packages/cache.yaml",
             "config/packages/cache.yaml",
             "config/packages/framework.yaml",
             "config/packages/framework.yaml",
             "config/packages/test/framework.yaml",
             "config/packages/test/framework.yaml",
+            "config/routes/dev/framework.yaml",
             "config/services.yaml",
             "config/services.yaml",
             "public/index.php",
             "public/index.php",
             "src/Controller/.gitignore",
             "src/Controller/.gitignore",
@@ -155,16 +160,22 @@
         ]
         ]
     },
     },
     "symfony/http-foundation": {
     "symfony/http-foundation": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/http-kernel": {
     "symfony/http-kernel": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/mime": {
     "symfony/mime": {
         "version": "v4.3.3"
         "version": "v4.3.3"
     },
     },
     "symfony/orm-pack": {
     "symfony/orm-pack": {
-        "version": "v1.0.6"
+        "version": "v1.0.8"
+    },
+    "symfony/polyfill-intl-grapheme": {
+        "version": "v1.15.0"
+    },
+    "symfony/polyfill-intl-normalizer": {
+        "version": "v1.15.0"
     },
     },
     "symfony/polyfill-php72": {
     "symfony/polyfill-php72": {
         "version": "v1.11.0"
         "version": "v1.11.0"
@@ -172,54 +183,59 @@
     "symfony/polyfill-php73": {
     "symfony/polyfill-php73": {
         "version": "v1.11.0"
         "version": "v1.11.0"
     },
     },
+    "symfony/polyfill-php80": {
+        "version": "v1.15.0"
+    },
     "symfony/routing": {
     "symfony/routing": {
         "version": "4.2",
         "version": "4.2",
         "recipe": {
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "repo": "github.com/symfony/recipes",
             "branch": "master",
             "branch": "master",
             "version": "4.2",
             "version": "4.2",
-            "ref": "4c107a8d23a16b997178fbd4103b8d2f54f688b7"
+            "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7"
         },
         },
         "files": [
         "files": [
-            "config/packages/dev/routing.yaml",
+            "config/packages/prod/routing.yaml",
             "config/packages/routing.yaml",
             "config/packages/routing.yaml",
-            "config/packages/test/routing.yaml",
             "config/routes.yaml"
             "config/routes.yaml"
         ]
         ]
     },
     },
     "symfony/service-contracts": {
     "symfony/service-contracts": {
-        "version": "v1.1.5"
+        "version": "v2.0.1"
+    },
+    "symfony/string": {
+        "version": "5.1.x-dev"
     },
     },
     "symfony/translation-contracts": {
     "symfony/translation-contracts": {
-        "version": "v1.1.5"
+        "version": "v2.0.1"
     },
     },
     "symfony/twig-bridge": {
     "symfony/twig-bridge": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/twig-bundle": {
     "symfony/twig-bundle": {
-        "version": "3.3",
+        "version": "5.0",
         "recipe": {
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "repo": "github.com/symfony/recipes",
             "branch": "master",
             "branch": "master",
-            "version": "3.3",
-            "ref": "369b5b29dc52b2c190002825ae7ec24ab6f962dd"
+            "version": "5.0",
+            "ref": "fab9149bbaa4d5eca054ed93f9e1b66cc500895d"
         },
         },
         "files": [
         "files": [
+            "config/packages/test/twig.yaml",
             "config/packages/twig.yaml",
             "config/packages/twig.yaml",
-            "config/routes/dev/twig.yaml",
             "templates/base.html.twig"
             "templates/base.html.twig"
         ]
         ]
     },
     },
     "symfony/var-dumper": {
     "symfony/var-dumper": {
-        "version": "v5.0.0-beta2"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/var-exporter": {
     "symfony/var-exporter": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "symfony/yaml": {
     "symfony/yaml": {
-        "version": "v4.3.3"
+        "version": "5.1.x-dev"
     },
     },
     "twig/twig": {
     "twig/twig": {
-        "version": "v2.11.3"
+        "version": "v3.0.3"
     }
     }
 }
 }

Some files were not shown because too many files changed in this diff