Initial check-in of a skeleton
							parent
							
								
									21e4b96ec2
								
							
						
					
					
						commit
						0c861870c8
					
				@ -0,0 +1,19 @@
 | 
			
		||||
# This file defines all environment variables that the application needs.
 | 
			
		||||
# Use ".env.local" for local overrides during development.
 | 
			
		||||
# Use real environment variables when deploying to production.
 | 
			
		||||
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
 | 
			
		||||
 | 
			
		||||
###> symfony/framework-bundle ###
 | 
			
		||||
APP_ENV=dev
 | 
			
		||||
APP_SECRET=558a40bd107371e7f7f25b4adf2d0da9
 | 
			
		||||
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
 | 
			
		||||
#TRUSTED_HOSTS=localhost,example.com
 | 
			
		||||
###< symfony/framework-bundle ###
 | 
			
		||||
 | 
			
		||||
###> doctrine/doctrine-bundle ###
 | 
			
		||||
# Format described at http://docs.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"
 | 
			
		||||
# Configure your db driver and server_version in config/packages/doctrine.yaml
 | 
			
		||||
#DATABASE_URL=pgsql://db_user:db_password@127.0.0.1:5432/db_name
 | 
			
		||||
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data.db
 | 
			
		||||
###< doctrine/doctrine-bundle ###
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
# define your env variables for the test env here
 | 
			
		||||
KERNEL_CLASS=App\\Kernel
 | 
			
		||||
APP_SECRET='s$cretf0rt3st'
 | 
			
		||||
SHELL_VERBOSITY=-1
 | 
			
		||||
SYMFONY_DEPRECATIONS_HELPER=999999
 | 
			
		||||
SYMFONY_PHPUNIT_VERSION=6.5
 | 
			
		||||
@ -0,0 +1,17 @@
 | 
			
		||||
 | 
			
		||||
###> symfony/framework-bundle ###
 | 
			
		||||
/.env.local
 | 
			
		||||
/.env.*.local
 | 
			
		||||
/public/bundles/
 | 
			
		||||
/var/
 | 
			
		||||
/vendor/
 | 
			
		||||
###< symfony/framework-bundle ###
 | 
			
		||||
 | 
			
		||||
###> symfony/web-server-bundle ###
 | 
			
		||||
/.web-server-pid
 | 
			
		||||
###< symfony/web-server-bundle ###
 | 
			
		||||
 | 
			
		||||
###> symfony/phpunit-bridge ###
 | 
			
		||||
.phpunit
 | 
			
		||||
/phpunit.xml
 | 
			
		||||
###< symfony/phpunit-bridge ###
 | 
			
		||||
@ -0,0 +1,29 @@
 | 
			
		||||
#!/usr/bin/env php
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
use App\Kernel;
 | 
			
		||||
use Symfony\Bundle\FrameworkBundle\Console\Application;
 | 
			
		||||
use Symfony\Component\Debug\Debug;
 | 
			
		||||
 | 
			
		||||
set_time_limit(0);
 | 
			
		||||
 | 
			
		||||
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.');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Kernel::bootstrapCli($_SERVER['argv']);
 | 
			
		||||
Kernel::bootstrapEnv();
 | 
			
		||||
 | 
			
		||||
if ($_SERVER['APP_DEBUG']) {
 | 
			
		||||
    umask(0000);
 | 
			
		||||
 | 
			
		||||
    if (class_exists(Debug::class)) {
 | 
			
		||||
        Debug::enable();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$kernel = new Kernel($_SERVER['APP_ENV'], $_SERVER['APP_DEBUG']);
 | 
			
		||||
$application = new Application($kernel);
 | 
			
		||||
$application->run();
 | 
			
		||||
@ -0,0 +1,20 @@
 | 
			
		||||
#!/usr/bin/env php
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
if (!file_exists(dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit')) {
 | 
			
		||||
    echo "Unable to find the `simple-phpunit` script in `vendor/symfony/phpunit-bridge/bin/`.\n";
 | 
			
		||||
    exit(1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$classLoader = require dirname(__DIR__).'/vendor/autoload.php';
 | 
			
		||||
App\Kernel::bootstrapEnv('test');
 | 
			
		||||
$classLoader->unregister();
 | 
			
		||||
 | 
			
		||||
if (false === getenv('SYMFONY_PHPUNIT_REMOVE')) {
 | 
			
		||||
    putenv('SYMFONY_PHPUNIT_REMOVE=');
 | 
			
		||||
}
 | 
			
		||||
if (false === getenv('SYMFONY_PHPUNIT_DIR')) {
 | 
			
		||||
    putenv('SYMFONY_PHPUNIT_DIR='.__DIR__.'/.phpunit');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
require dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit';
 | 
			
		||||
@ -0,0 +1,75 @@
 | 
			
		||||
{
 | 
			
		||||
    "type": "project",
 | 
			
		||||
    "license": "proprietary",
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": "^7.1.3",
 | 
			
		||||
        "ext-ctype": "*",
 | 
			
		||||
        "ext-iconv": "*",
 | 
			
		||||
        "friendsofsymfony/rest-bundle": "^2.4",
 | 
			
		||||
        "sensio/framework-extra-bundle": "^5.2",
 | 
			
		||||
        "symfony/console": "4.1.*",
 | 
			
		||||
        "symfony/flex": "^1.1",
 | 
			
		||||
        "symfony/framework-bundle": "4.1.*",
 | 
			
		||||
        "symfony/monolog-bundle": "^3.3",
 | 
			
		||||
        "symfony/orm-pack": "^1.0",
 | 
			
		||||
        "symfony/security-bundle": "4.1.*",
 | 
			
		||||
        "symfony/serializer-pack": "^1.0",
 | 
			
		||||
        "symfony/translation": "4.1.*",
 | 
			
		||||
        "symfony/twig-bundle": "4.1.*",
 | 
			
		||||
        "symfony/yaml": "4.1.*"
 | 
			
		||||
    },
 | 
			
		||||
    "require-dev": {
 | 
			
		||||
        "doctrine/doctrine-fixtures-bundle": "^3.0",
 | 
			
		||||
        "symfony/debug-pack": "^1.0",
 | 
			
		||||
        "symfony/dotenv": "4.1.*",
 | 
			
		||||
        "symfony/maker-bundle": "^1.9",
 | 
			
		||||
        "symfony/profiler-pack": "^1.0",
 | 
			
		||||
        "symfony/test-pack": "^1.0",
 | 
			
		||||
        "symfony/web-server-bundle": "4.1.*"
 | 
			
		||||
    },
 | 
			
		||||
    "config": {
 | 
			
		||||
        "preferred-install": {
 | 
			
		||||
            "*": "dist"
 | 
			
		||||
        },
 | 
			
		||||
        "sort-packages": true
 | 
			
		||||
    },
 | 
			
		||||
    "autoload": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "App\\": "src/"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "autoload-dev": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "App\\Tests\\": "tests/"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "replace": {
 | 
			
		||||
        "paragonie/random_compat": "2.*",
 | 
			
		||||
        "symfony/polyfill-ctype": "*",
 | 
			
		||||
        "symfony/polyfill-iconv": "*",
 | 
			
		||||
        "symfony/polyfill-php71": "*",
 | 
			
		||||
        "symfony/polyfill-php70": "*",
 | 
			
		||||
        "symfony/polyfill-php56": "*"
 | 
			
		||||
    },
 | 
			
		||||
    "scripts": {
 | 
			
		||||
        "auto-scripts": {
 | 
			
		||||
            "cache:clear": "symfony-cmd",
 | 
			
		||||
            "assets:install %PUBLIC_DIR%": "symfony-cmd"
 | 
			
		||||
        },
 | 
			
		||||
        "post-install-cmd": [
 | 
			
		||||
            "@auto-scripts"
 | 
			
		||||
        ],
 | 
			
		||||
        "post-update-cmd": [
 | 
			
		||||
            "@auto-scripts"
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "conflict": {
 | 
			
		||||
        "symfony/symfony": "*"
 | 
			
		||||
    },
 | 
			
		||||
    "extra": {
 | 
			
		||||
        "symfony": {
 | 
			
		||||
            "allow-contrib": false,
 | 
			
		||||
            "require": "4.1.*"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								@ -0,0 +1,18 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
return [
 | 
			
		||||
    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
 | 
			
		||||
    Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true],
 | 
			
		||||
    Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
 | 
			
		||||
    Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle::class => ['all' => true],
 | 
			
		||||
    Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
 | 
			
		||||
    Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
 | 
			
		||||
    Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
 | 
			
		||||
    Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
 | 
			
		||||
    Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
 | 
			
		||||
    FOS\RestBundle\FOSRestBundle::class => ['all' => true],
 | 
			
		||||
    Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
 | 
			
		||||
    Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
 | 
			
		||||
    Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],
 | 
			
		||||
    Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
 | 
			
		||||
];
 | 
			
		||||
@ -0,0 +1,21 @@
 | 
			
		||||
App\Entity\Hero:
 | 
			
		||||
    type: entity
 | 
			
		||||
    repositoryClass: App\Entity\Repository\HeroRepository
 | 
			
		||||
    table: hero
 | 
			
		||||
    id:
 | 
			
		||||
        id:
 | 
			
		||||
            type: integer
 | 
			
		||||
            generator: { strategy: AUTO }
 | 
			
		||||
    fields:
 | 
			
		||||
        name:
 | 
			
		||||
            type: string
 | 
			
		||||
            length: 32
 | 
			
		||||
            unique: true
 | 
			
		||||
 | 
			
		||||
    manyToOne:
 | 
			
		||||
        user:
 | 
			
		||||
            targetEntity: User
 | 
			
		||||
            inversedBy: heroes
 | 
			
		||||
            joinColumn:
 | 
			
		||||
                onDelete: CASCADE
 | 
			
		||||
                nullable: false
 | 
			
		||||
@ -0,0 +1,22 @@
 | 
			
		||||
App\Entity\User:
 | 
			
		||||
    type: entity
 | 
			
		||||
    repositoryClass: App\Entity\Repository\UserRepository
 | 
			
		||||
    table: user
 | 
			
		||||
    id:
 | 
			
		||||
        id:
 | 
			
		||||
            type: integer
 | 
			
		||||
            generator: { strategy: AUTO }
 | 
			
		||||
    fields:
 | 
			
		||||
        name:
 | 
			
		||||
            type: string
 | 
			
		||||
            length: 32
 | 
			
		||||
            unique: true
 | 
			
		||||
        password:
 | 
			
		||||
            type:  string
 | 
			
		||||
            length: 64
 | 
			
		||||
 | 
			
		||||
    oneToMany:
 | 
			
		||||
        heroes:
 | 
			
		||||
            targetEntity: Hero
 | 
			
		||||
            mappedBy: user
 | 
			
		||||
            cascade: ["persist", "merge"]
 | 
			
		||||
@ -0,0 +1,4 @@
 | 
			
		||||
debug:
 | 
			
		||||
    # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
 | 
			
		||||
    # See the "server:dump" command to start a new server.
 | 
			
		||||
    dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"
 | 
			
		||||
@ -0,0 +1,16 @@
 | 
			
		||||
services:
 | 
			
		||||
    EasyCorp\EasyLog\EasyLogHandler:
 | 
			
		||||
        public: false
 | 
			
		||||
        arguments: ['%kernel.logs_dir%/%kernel.environment%.log']
 | 
			
		||||
 | 
			
		||||
#// FIXME: How to add this configuration automatically without messing up with the monolog configuration?
 | 
			
		||||
#monolog:
 | 
			
		||||
#    handlers:
 | 
			
		||||
#        buffered:
 | 
			
		||||
#            type:     buffer
 | 
			
		||||
#            handler:  easylog
 | 
			
		||||
#            channels: ['!event']
 | 
			
		||||
#            level:    debug
 | 
			
		||||
#        easylog:
 | 
			
		||||
#            type: service
 | 
			
		||||
#            id:   EasyCorp\EasyLog\EasyLogHandler
 | 
			
		||||
@ -0,0 +1,19 @@
 | 
			
		||||
monolog:
 | 
			
		||||
    handlers:
 | 
			
		||||
        main:
 | 
			
		||||
            type: stream
 | 
			
		||||
            path: "%kernel.logs_dir%/%kernel.environment%.log"
 | 
			
		||||
            level: debug
 | 
			
		||||
            channels: ["!event"]
 | 
			
		||||
        # uncomment to get logging in your browser
 | 
			
		||||
        # you may have to allow bigger header sizes in your Web server configuration
 | 
			
		||||
        #firephp:
 | 
			
		||||
        #    type: firephp
 | 
			
		||||
        #    level: info
 | 
			
		||||
        #chromephp:
 | 
			
		||||
        #    type: chromephp
 | 
			
		||||
        #    level: info
 | 
			
		||||
        console:
 | 
			
		||||
            type: console
 | 
			
		||||
            process_psr_3_messages: false
 | 
			
		||||
            channels: ["!event", "!doctrine", "!console"]
 | 
			
		||||
@ -0,0 +1,3 @@
 | 
			
		||||
framework:
 | 
			
		||||
    router:
 | 
			
		||||
        strict_requirements: true
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
web_profiler:
 | 
			
		||||
    toolbar: true
 | 
			
		||||
    intercept_redirects: false
 | 
			
		||||
 | 
			
		||||
framework:
 | 
			
		||||
    profiler: { only_exceptions: false }
 | 
			
		||||
@ -0,0 +1,25 @@
 | 
			
		||||
parameters:
 | 
			
		||||
    # Adds a fallback DATABASE_URL if the env var is not set.
 | 
			
		||||
    # This allows you to run cache:warmup even if your
 | 
			
		||||
    # environment variables are not available yet.
 | 
			
		||||
    # You should not need to change this value.
 | 
			
		||||
    env(DATABASE_URL): ''
 | 
			
		||||
 | 
			
		||||
doctrine:
 | 
			
		||||
    dbal:
 | 
			
		||||
        # configure these for your database server
 | 
			
		||||
        driver: 'pdo_sqlite'
 | 
			
		||||
        charset: utf8
 | 
			
		||||
        
 | 
			
		||||
        url: '%env(resolve:DATABASE_URL)%'
 | 
			
		||||
    orm:
 | 
			
		||||
        auto_generate_proxy_classes: true
 | 
			
		||||
        naming_strategy: doctrine.orm.naming_strategy.underscore
 | 
			
		||||
        auto_mapping: true
 | 
			
		||||
        mappings:
 | 
			
		||||
            App:
 | 
			
		||||
                is_bundle: false
 | 
			
		||||
                type: yml
 | 
			
		||||
                dir: '%kernel.project_dir%/config/orm'
 | 
			
		||||
                prefix: 'App\Entity'
 | 
			
		||||
                alias: App
 | 
			
		||||
@ -0,0 +1,5 @@
 | 
			
		||||
doctrine_migrations:
 | 
			
		||||
    dir_name: '%kernel.project_dir%/src/Migrations'
 | 
			
		||||
    # namespace is arbitrary but should be different from App\Migrations
 | 
			
		||||
    # as migrations classes should NOT be autoloaded
 | 
			
		||||
    namespace: DoctrineMigrations
 | 
			
		||||
@ -0,0 +1,24 @@
 | 
			
		||||
# Read the documentation: https://symfony.com/doc/master/bundles/FOSRestBundle/index.html
 | 
			
		||||
fos_rest:
 | 
			
		||||
    disable_csrf_role: ROLE_API
 | 
			
		||||
    param_fetcher_listener:  true
 | 
			
		||||
    body_listener: true
 | 
			
		||||
#    allowed_methods_listener:  true
 | 
			
		||||
#    routing_loader: true
 | 
			
		||||
    view:
 | 
			
		||||
        view_response_listener:  force
 | 
			
		||||
    exception:
 | 
			
		||||
        enabled: true
 | 
			
		||||
        exception_controller: 'fos_rest.exception.controller:showAction'
 | 
			
		||||
        codes:
 | 
			
		||||
            'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404
 | 
			
		||||
            'Doctrine\ORM\OptimisticLockException': HTTP_CONFLICT
 | 
			
		||||
        messages:
 | 
			
		||||
            'Symfony\Component\Routing\Exception\ResourceNotFoundException': true
 | 
			
		||||
    format_listener:
 | 
			
		||||
        rules:
 | 
			
		||||
            - { path: ^/api, prefer_extension: true, fallback_format: json, priorities: [ json, xml ] }
 | 
			
		||||
            - { path: ^/, prefer_extension: true, fallback_format: html, priorities: [ html ] }
 | 
			
		||||
    serializer:
 | 
			
		||||
        groups: ['Default']
 | 
			
		||||
        
 | 
			
		||||
@ -0,0 +1,34 @@
 | 
			
		||||
framework:
 | 
			
		||||
    secret: '%env(APP_SECRET)%'
 | 
			
		||||
    #default_locale: en
 | 
			
		||||
    #csrf_protection: true
 | 
			
		||||
    #http_method_override: true
 | 
			
		||||
 | 
			
		||||
    # Enables session support. Note that the session will ONLY be started if you read or write from it.
 | 
			
		||||
    # Remove or comment this section to explicitly disable session support.
 | 
			
		||||
    session:
 | 
			
		||||
        handler_id: ~
 | 
			
		||||
 | 
			
		||||
    #esi: true
 | 
			
		||||
    #fragments: true
 | 
			
		||||
    php_errors:
 | 
			
		||||
        log: true
 | 
			
		||||
 | 
			
		||||
    cache:
 | 
			
		||||
        # Put the unique name of your app here: the prefix seed
 | 
			
		||||
        # is used to compute stable namespaces for cache keys.
 | 
			
		||||
        #prefix_seed: your_vendor_name/app_name
 | 
			
		||||
 | 
			
		||||
        # The app cache caches to the filesystem by default.
 | 
			
		||||
        # 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
 | 
			
		||||
 | 
			
		||||
    serializer:      { enable_annotations: true }
 | 
			
		||||
    templating:
 | 
			
		||||
        engines: ['twig']
 | 
			
		||||
@ -0,0 +1,32 @@
 | 
			
		||||
doctrine:
 | 
			
		||||
    orm:
 | 
			
		||||
        auto_generate_proxy_classes: false
 | 
			
		||||
        metadata_cache_driver:
 | 
			
		||||
            type: service
 | 
			
		||||
            id: doctrine.system_cache_provider
 | 
			
		||||
        query_cache_driver:
 | 
			
		||||
            type: service
 | 
			
		||||
            id: doctrine.system_cache_provider
 | 
			
		||||
        result_cache_driver:
 | 
			
		||||
            type: service
 | 
			
		||||
            id: doctrine.result_cache_provider
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
    doctrine.result_cache_provider:
 | 
			
		||||
        class: Symfony\Component\Cache\DoctrineProvider
 | 
			
		||||
        public: false
 | 
			
		||||
        arguments:
 | 
			
		||||
            - '@doctrine.result_cache_pool'
 | 
			
		||||
    doctrine.system_cache_provider:
 | 
			
		||||
        class: Symfony\Component\Cache\DoctrineProvider
 | 
			
		||||
        public: false
 | 
			
		||||
        arguments:
 | 
			
		||||
            - '@doctrine.system_cache_pool'
 | 
			
		||||
 | 
			
		||||
framework:
 | 
			
		||||
    cache:
 | 
			
		||||
        pools:
 | 
			
		||||
            doctrine.result_cache_pool:
 | 
			
		||||
                adapter: cache.app
 | 
			
		||||
            doctrine.system_cache_pool:
 | 
			
		||||
                adapter: cache.system
 | 
			
		||||
@ -0,0 +1,25 @@
 | 
			
		||||
monolog:
 | 
			
		||||
    handlers:
 | 
			
		||||
        main:
 | 
			
		||||
            type: fingers_crossed
 | 
			
		||||
            action_level: error
 | 
			
		||||
            handler: nested
 | 
			
		||||
            excluded_404s:
 | 
			
		||||
                # regex: exclude all 404 errors from the logs
 | 
			
		||||
                - ^/
 | 
			
		||||
        nested:
 | 
			
		||||
            type: stream
 | 
			
		||||
            path: "%kernel.logs_dir%/%kernel.environment%.log"
 | 
			
		||||
            level: debug
 | 
			
		||||
        console:
 | 
			
		||||
            type: console
 | 
			
		||||
            process_psr_3_messages: false
 | 
			
		||||
            channels: ["!event", "!doctrine"]
 | 
			
		||||
        deprecation:
 | 
			
		||||
            type: stream
 | 
			
		||||
            path: "%kernel.logs_dir%/%kernel.environment%.deprecations.log"
 | 
			
		||||
        deprecation_filter:
 | 
			
		||||
            type: filter
 | 
			
		||||
            handler: deprecation
 | 
			
		||||
            max_level: info
 | 
			
		||||
            channels: ["php"]
 | 
			
		||||
@ -0,0 +1,3 @@
 | 
			
		||||
framework:
 | 
			
		||||
    router:
 | 
			
		||||
        strict_requirements: ~
 | 
			
		||||
@ -0,0 +1,24 @@
 | 
			
		||||
security:
 | 
			
		||||
    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
 | 
			
		||||
    providers:
 | 
			
		||||
        in_memory: { memory: ~ }
 | 
			
		||||
    firewalls:
 | 
			
		||||
        dev:
 | 
			
		||||
            pattern: ^/(_(profiler|wdt)|css|images|js)/
 | 
			
		||||
            security: false
 | 
			
		||||
        main:
 | 
			
		||||
            anonymous: true
 | 
			
		||||
 | 
			
		||||
            # activate different ways to authenticate
 | 
			
		||||
 | 
			
		||||
            # http_basic: true
 | 
			
		||||
            # https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
 | 
			
		||||
 | 
			
		||||
            # form_login: true
 | 
			
		||||
            # https://symfony.com/doc/current/security/form_login_setup.html
 | 
			
		||||
 | 
			
		||||
    # Easy way to control access for large sections of your site
 | 
			
		||||
    # Note: Only the *first* access control that matches will be used
 | 
			
		||||
    access_control:
 | 
			
		||||
        # - { path: ^/admin, roles: ROLE_ADMIN }
 | 
			
		||||
        # - { path: ^/profile, roles: ROLE_USER }
 | 
			
		||||
@ -0,0 +1,3 @@
 | 
			
		||||
sensio_framework_extra:
 | 
			
		||||
    router:
 | 
			
		||||
        annotations: false
 | 
			
		||||
@ -0,0 +1,4 @@
 | 
			
		||||
framework:
 | 
			
		||||
    test: true
 | 
			
		||||
    session:
 | 
			
		||||
        storage_id: session.storage.mock_file
 | 
			
		||||
@ -0,0 +1,7 @@
 | 
			
		||||
monolog:
 | 
			
		||||
    handlers:
 | 
			
		||||
        main:
 | 
			
		||||
            type: stream
 | 
			
		||||
            path: "%kernel.logs_dir%/%kernel.environment%.log"
 | 
			
		||||
            level: debug
 | 
			
		||||
            channels: ["!event"]
 | 
			
		||||
@ -0,0 +1,3 @@
 | 
			
		||||
framework:
 | 
			
		||||
    router:
 | 
			
		||||
        strict_requirements: true
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
web_profiler:
 | 
			
		||||
    toolbar: false
 | 
			
		||||
    intercept_redirects: false
 | 
			
		||||
 | 
			
		||||
framework:
 | 
			
		||||
    profiler: { collect: false }
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
framework:
 | 
			
		||||
    default_locale: '%locale%'
 | 
			
		||||
    translator:
 | 
			
		||||
        default_path: '%kernel.project_dir%/translations'
 | 
			
		||||
        fallbacks:
 | 
			
		||||
            - '%locale%'
 | 
			
		||||
@ -0,0 +1,5 @@
 | 
			
		||||
twig:
 | 
			
		||||
    default_path: '%kernel.project_dir%/templates'
 | 
			
		||||
    debug: '%kernel.debug%'
 | 
			
		||||
    strict_variables: '%kernel.debug%'
 | 
			
		||||
    exception_controller: 'FOS\RestBundle\Controller\ExceptionController::showAction'
 | 
			
		||||
@ -0,0 +1,13 @@
 | 
			
		||||
#index:
 | 
			
		||||
#    path: /
 | 
			
		||||
#    controller: App\Controller\DefaultController::index
 | 
			
		||||
 | 
			
		||||
user:
 | 
			
		||||
    prefix:   /api
 | 
			
		||||
    type:     rest
 | 
			
		||||
    resource: App\Controller\UserController
 | 
			
		||||
 | 
			
		||||
hero:
 | 
			
		||||
    prefix:   /api
 | 
			
		||||
    type:     rest
 | 
			
		||||
    resource: App\Controller\HeroController
 | 
			
		||||
@ -0,0 +1,3 @@
 | 
			
		||||
controllers:
 | 
			
		||||
    resource: ../../src/Controller/
 | 
			
		||||
    type: annotation
 | 
			
		||||
@ -0,0 +1,3 @@
 | 
			
		||||
_errors:
 | 
			
		||||
    resource: '@TwigBundle/Resources/config/routing/errors.xml'
 | 
			
		||||
    prefix: /_error
 | 
			
		||||
@ -0,0 +1,7 @@
 | 
			
		||||
web_profiler_wdt:
 | 
			
		||||
    resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
 | 
			
		||||
    prefix: /_wdt
 | 
			
		||||
 | 
			
		||||
web_profiler_profiler:
 | 
			
		||||
    resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
 | 
			
		||||
    prefix: /_profiler
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
App\Entity\Hero:
 | 
			
		||||
    attributes:
 | 
			
		||||
        id:
 | 
			
		||||
            groups: ['Default']
 | 
			
		||||
        name:
 | 
			
		||||
            groups: ['Default']
 | 
			
		||||
        heros:
 | 
			
		||||
            groups: ['UserWithHeroes']
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
App\Entity\User:
 | 
			
		||||
    attributes:
 | 
			
		||||
        id:
 | 
			
		||||
            groups: ['Default']
 | 
			
		||||
        name:
 | 
			
		||||
            groups: ['Default']
 | 
			
		||||
        user:
 | 
			
		||||
            groups: ['HeroWithUser']
 | 
			
		||||
@ -0,0 +1,35 @@
 | 
			
		||||
# This file is the entry point to configure your own services.
 | 
			
		||||
# Files in the packages/ subdirectory configure your dependencies.
 | 
			
		||||
 | 
			
		||||
# Put parameters here that don't need to change on each machine where the app is deployed
 | 
			
		||||
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
 | 
			
		||||
parameters:
 | 
			
		||||
    locale: 'en'
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
    # default configuration for services in *this* file
 | 
			
		||||
    _defaults:
 | 
			
		||||
        autowire: true      # Automatically injects dependencies in your services.
 | 
			
		||||
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
 | 
			
		||||
        public: false       # Allows optimizing the container by removing unused services; this also means
 | 
			
		||||
                            # fetching services directly from the container via $container->get() won't work.
 | 
			
		||||
                            # The best practice is to be explicit about your dependencies anyway.
 | 
			
		||||
 | 
			
		||||
    # makes classes in src/ available to be used as services
 | 
			
		||||
    # this creates a service per class whose id is the fully-qualified class name
 | 
			
		||||
    App\:
 | 
			
		||||
        resource: '../src/*'
 | 
			
		||||
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
 | 
			
		||||
 | 
			
		||||
    # controllers are imported separately to make sure services can be injected
 | 
			
		||||
    # as action arguments even if you don't extend any base controller class
 | 
			
		||||
    App\Controller\:
 | 
			
		||||
        resource: '../src/Controller'
 | 
			
		||||
        tags: ['controller.service_arguments']
 | 
			
		||||
 | 
			
		||||
    App\Entity\Repository\:
 | 
			
		||||
        resource: '../src/Entity/Repository'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    # add more service definitions when explicit configuration is needed
 | 
			
		||||
    # please note that last definitions always *replace* previous ones
 | 
			
		||||
@ -0,0 +1,29 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
 | 
			
		||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
			
		||||
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.5/phpunit.xsd"
 | 
			
		||||
         backupGlobals="false"
 | 
			
		||||
         colors="true"
 | 
			
		||||
         bootstrap="vendor/autoload.php"
 | 
			
		||||
>
 | 
			
		||||
    <php>
 | 
			
		||||
        <ini name="error_reporting" value="-1" />
 | 
			
		||||
    </php>
 | 
			
		||||
 | 
			
		||||
    <testsuites>
 | 
			
		||||
        <testsuite name="Project Test Suite">
 | 
			
		||||
            <directory>tests</directory>
 | 
			
		||||
        </testsuite>
 | 
			
		||||
    </testsuites>
 | 
			
		||||
 | 
			
		||||
    <filter>
 | 
			
		||||
        <whitelist>
 | 
			
		||||
            <directory>src</directory>
 | 
			
		||||
        </whitelist>
 | 
			
		||||
    </filter>
 | 
			
		||||
 | 
			
		||||
    <listeners>
 | 
			
		||||
        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
 | 
			
		||||
    </listeners>
 | 
			
		||||
</phpunit>
 | 
			
		||||
@ -0,0 +1,29 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
use App\Kernel;
 | 
			
		||||
use Symfony\Component\Debug\Debug;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
 | 
			
		||||
require dirname(__DIR__).'/vendor/autoload.php';
 | 
			
		||||
 | 
			
		||||
Kernel::bootstrapEnv();
 | 
			
		||||
 | 
			
		||||
if ($_SERVER['APP_DEBUG']) {
 | 
			
		||||
    umask(0000);
 | 
			
		||||
 | 
			
		||||
    Debug::enable();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
 | 
			
		||||
    Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
 | 
			
		||||
    Request::setTrustedHosts(explode(',', $trustedHosts));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$kernel = new Kernel($_SERVER['APP_ENV'], $_SERVER['APP_DEBUG']);
 | 
			
		||||
$request = Request::createFromGlobals();
 | 
			
		||||
$response = $kernel->handle($request);
 | 
			
		||||
$response->send();
 | 
			
		||||
$kernel->terminate($request, $response);
 | 
			
		||||
@ -0,0 +1,31 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Controller;
 | 
			
		||||
 | 
			
		||||
use App\Entity\Repository\HeroRepository;
 | 
			
		||||
use FOS\RestBundle\Controller\Annotations as Rest;
 | 
			
		||||
use FOS\RestBundle\Controller\FOSRestController;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @Rest\RouteResource("Hero")
 | 
			
		||||
 */
 | 
			
		||||
class HeroController extends FOSRestController
 | 
			
		||||
{
 | 
			
		||||
    protected $HeroRepository;
 | 
			
		||||
    
 | 
			
		||||
    public function __construct(HeroRepository $heroRepository)
 | 
			
		||||
    {
 | 
			
		||||
        $this->heroRepository = $heroRepository;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * @Rest\View()
 | 
			
		||||
     */
 | 
			
		||||
    public function cgetAction()
 | 
			
		||||
    {
 | 
			
		||||
        $heros = $this->heroRepository->findAll();
 | 
			
		||||
        return $this->view($heros, Response::HTTP_OK);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,32 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Controller;
 | 
			
		||||
 | 
			
		||||
use App\Entity\Repository\UserRepository;
 | 
			
		||||
use FOS\RestBundle\Controller\Annotations as Rest;
 | 
			
		||||
use FOS\RestBundle\Controller\FOSRestController;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @Rest\RouteResource("User")
 | 
			
		||||
 */
 | 
			
		||||
class UserController extends FOSRestController
 | 
			
		||||
{
 | 
			
		||||
    protected $userRepository;
 | 
			
		||||
    
 | 
			
		||||
    public function __construct(UserRepository $userRepository)
 | 
			
		||||
    {
 | 
			
		||||
        $this->userRepository = $userRepository;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * @Rest\View()
 | 
			
		||||
     */
 | 
			
		||||
    public function cgetAction()
 | 
			
		||||
    {
 | 
			
		||||
        $users = $this->userRepository->findAll();
 | 
			
		||||
        return $this->view($users, Response::HTTP_OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,29 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\DataFixtures;
 | 
			
		||||
 | 
			
		||||
use App\Entity\Hero;
 | 
			
		||||
use Doctrine\Bundle\FixturesBundle\Fixture;
 | 
			
		||||
use Doctrine\Common\Persistence\ObjectManager;
 | 
			
		||||
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
 | 
			
		||||
 | 
			
		||||
class HeroFixtures extends Fixture implements DependentFixtureInterface
 | 
			
		||||
{
 | 
			
		||||
    public function load(ObjectManager $manager)
 | 
			
		||||
    {
 | 
			
		||||
        $hero = new Hero();
 | 
			
		||||
        $hero->setName('ruffy');
 | 
			
		||||
        $hero->setUser($this->getReference(UserFixtures::ADMIN_USER_REFERENCE));
 | 
			
		||||
        
 | 
			
		||||
        $manager->persist($hero);
 | 
			
		||||
        $manager->flush();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public function getDependencies()
 | 
			
		||||
    {
 | 
			
		||||
        return array(
 | 
			
		||||
            UserFixtures::class,
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,31 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\DataFixtures;
 | 
			
		||||
 | 
			
		||||
use App\Entity\User;
 | 
			
		||||
use Doctrine\Bundle\FixturesBundle\Fixture;
 | 
			
		||||
use Doctrine\Common\Persistence\ObjectManager;
 | 
			
		||||
 | 
			
		||||
class UserFixtures extends Fixture
 | 
			
		||||
{
 | 
			
		||||
    public const ADMIN_USER_REFERENCE = 'admin-user';
 | 
			
		||||
    public const DUMMY_USER_REFERENCE = 'dummy-user';
 | 
			
		||||
    
 | 
			
		||||
    public function load(ObjectManager $manager)
 | 
			
		||||
    {
 | 
			
		||||
        $userAdmin = new User();
 | 
			
		||||
        $userAdmin->setName('admin');
 | 
			
		||||
        $userAdmin->setPassword('123456789');
 | 
			
		||||
        $manager->persist($userAdmin);
 | 
			
		||||
 | 
			
		||||
        $userDummy = new User();
 | 
			
		||||
        $userDummy->setName('dummy');
 | 
			
		||||
        $userDummy->setPassword('1234');
 | 
			
		||||
        $manager->persist($userDummy);
 | 
			
		||||
 | 
			
		||||
        $manager->flush();
 | 
			
		||||
        
 | 
			
		||||
        $this->addReference(self::ADMIN_USER_REFERENCE, $userAdmin);
 | 
			
		||||
        $this->addReference(self::DUMMY_USER_REFERENCE, $userDummy);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,41 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Entity;
 | 
			
		||||
 | 
			
		||||
class Hero
 | 
			
		||||
{
 | 
			
		||||
    private $id;
 | 
			
		||||
 | 
			
		||||
    private $name;
 | 
			
		||||
 | 
			
		||||
    private $user;
 | 
			
		||||
 | 
			
		||||
    public function getId(): ?int
 | 
			
		||||
    {
 | 
			
		||||
        return $this->id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getName(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->name;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setName(string $name): self
 | 
			
		||||
    {
 | 
			
		||||
        $this->name = $name;
 | 
			
		||||
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getUser(): ?User
 | 
			
		||||
    {
 | 
			
		||||
        return $this->user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setUser(?User $user): self
 | 
			
		||||
    {
 | 
			
		||||
        $this->user = $user;
 | 
			
		||||
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,50 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\Repository;
 | 
			
		||||
 | 
			
		||||
use App\Entity\Hero;
 | 
			
		||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
 | 
			
		||||
use Symfony\Bridge\Doctrine\RegistryInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @method Hero|null find($id, $lockMode = null, $lockVersion = null)
 | 
			
		||||
 * @method Hero|null findOneBy(array $criteria, array $orderBy = null)
 | 
			
		||||
 * @method Hero[]    findAll()
 | 
			
		||||
 * @method Hero[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 | 
			
		||||
 */
 | 
			
		||||
class HeroRepository extends ServiceEntityRepository
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(RegistryInterface $registry)
 | 
			
		||||
    {
 | 
			
		||||
        parent::__construct($registry, Hero::class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // /**
 | 
			
		||||
    //  * @return Hero[] Returns an array of Hero objects
 | 
			
		||||
    //  */
 | 
			
		||||
    /*
 | 
			
		||||
    public function findByExampleField($value)
 | 
			
		||||
    {
 | 
			
		||||
        return $this->createQueryBuilder('h')
 | 
			
		||||
            ->andWhere('h.exampleField = :val')
 | 
			
		||||
            ->setParameter('val', $value)
 | 
			
		||||
            ->orderBy('h.id', 'ASC')
 | 
			
		||||
            ->setMaxResults(10)
 | 
			
		||||
            ->getQuery()
 | 
			
		||||
            ->getResult()
 | 
			
		||||
        ;
 | 
			
		||||
    }
 | 
			
		||||
    */
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
    public function findOneBySomeField($value): ?Hero
 | 
			
		||||
    {
 | 
			
		||||
        return $this->createQueryBuilder('h')
 | 
			
		||||
            ->andWhere('h.exampleField = :val')
 | 
			
		||||
            ->setParameter('val', $value)
 | 
			
		||||
            ->getQuery()
 | 
			
		||||
            ->getOneOrNullResult()
 | 
			
		||||
        ;
 | 
			
		||||
    }
 | 
			
		||||
    */
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,50 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Entity\Repository;
 | 
			
		||||
 | 
			
		||||
use App\Entity\User;
 | 
			
		||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
 | 
			
		||||
use Symfony\Bridge\Doctrine\RegistryInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @method User|null find($id, $lockMode = null, $lockVersion = null)
 | 
			
		||||
 * @method User|null findOneBy(array $criteria, array $orderBy = null)
 | 
			
		||||
 * @method User[]    findAll()
 | 
			
		||||
 * @method User[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 | 
			
		||||
 */
 | 
			
		||||
class UserRepository extends ServiceEntityRepository
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(RegistryInterface $registry)
 | 
			
		||||
    {
 | 
			
		||||
        parent::__construct($registry, User::class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // /**
 | 
			
		||||
    //  * @return User[] Returns an array of User objects
 | 
			
		||||
    //  */
 | 
			
		||||
    /*
 | 
			
		||||
    public function findByExampleField($value)
 | 
			
		||||
    {
 | 
			
		||||
        return $this->createQueryBuilder('u')
 | 
			
		||||
            ->andWhere('u.exampleField = :val')
 | 
			
		||||
            ->setParameter('val', $value)
 | 
			
		||||
            ->orderBy('u.id', 'ASC')
 | 
			
		||||
            ->setMaxResults(10)
 | 
			
		||||
            ->getQuery()
 | 
			
		||||
            ->getResult()
 | 
			
		||||
        ;
 | 
			
		||||
    }
 | 
			
		||||
    */
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
    public function findOneBySomeField($value): ?User
 | 
			
		||||
    {
 | 
			
		||||
        return $this->createQueryBuilder('u')
 | 
			
		||||
            ->andWhere('u.exampleField = :val')
 | 
			
		||||
            ->setParameter('val', $value)
 | 
			
		||||
            ->getQuery()
 | 
			
		||||
            ->getOneOrNullResult()
 | 
			
		||||
        ;
 | 
			
		||||
    }
 | 
			
		||||
    */
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,82 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Entity;
 | 
			
		||||
 | 
			
		||||
use Doctrine\Common\Collections\ArrayCollection;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
 | 
			
		||||
class User
 | 
			
		||||
{
 | 
			
		||||
    private $id;
 | 
			
		||||
 | 
			
		||||
    private $name;
 | 
			
		||||
 | 
			
		||||
    private $password;
 | 
			
		||||
 | 
			
		||||
    private $heroes;
 | 
			
		||||
 | 
			
		||||
    public function __construct()
 | 
			
		||||
    {
 | 
			
		||||
        $this->heroes = new ArrayCollection();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getId(): ?int
 | 
			
		||||
    {
 | 
			
		||||
        return $this->id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getName(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->name;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setName(string $name): self
 | 
			
		||||
    {
 | 
			
		||||
        $this->name = $name;
 | 
			
		||||
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getPassword(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->password;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setPassword(string $password): self
 | 
			
		||||
    {
 | 
			
		||||
        $this->password = $password;
 | 
			
		||||
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return Collection|Hero[]
 | 
			
		||||
     */
 | 
			
		||||
    public function getHeroes(): Collection
 | 
			
		||||
    {
 | 
			
		||||
        return $this->heroes;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function addHero(Hero $hero): self
 | 
			
		||||
    {
 | 
			
		||||
        if (!$this->heroes->contains($hero)) {
 | 
			
		||||
            $this->heroes[] = $hero;
 | 
			
		||||
            $hero->setUser($this);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function removeHero(Hero $hero): self
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->heroes->contains($hero)) {
 | 
			
		||||
            $this->heroes->removeElement($hero);
 | 
			
		||||
            // set the owning side to null (unless already changed)
 | 
			
		||||
            if ($hero->getUser() === $this) {
 | 
			
		||||
                $hero->setUser(null);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,140 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App;
 | 
			
		||||
 | 
			
		||||
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
 | 
			
		||||
use Symfony\Component\Config\Loader\LoaderInterface;
 | 
			
		||||
use Symfony\Component\Config\Resource\FileResource;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
 | 
			
		||||
use Symfony\Component\Dotenv\Dotenv;
 | 
			
		||||
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
 | 
			
		||||
use Symfony\Component\Routing\RouteCollectionBuilder;
 | 
			
		||||
 | 
			
		||||
class Kernel extends BaseKernel
 | 
			
		||||
{
 | 
			
		||||
    use MicroKernelTrait;
 | 
			
		||||
 | 
			
		||||
    const CONFIG_EXTS = '.{php,xml,yaml,yml}';
 | 
			
		||||
 | 
			
		||||
    public function getCacheDir()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->getProjectDir().'/var/cache/'.$this->environment;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getLogDir()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->getProjectDir().'/var/log';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function registerBundles()
 | 
			
		||||
    {
 | 
			
		||||
        $contents = require $this->getProjectDir().'/config/bundles.php';
 | 
			
		||||
        foreach ($contents as $class => $envs) {
 | 
			
		||||
            if (isset($envs['all']) || isset($envs[$this->environment])) {
 | 
			
		||||
                yield new $class();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
 | 
			
		||||
    {
 | 
			
		||||
        $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php'));
 | 
			
		||||
        // Feel free to remove the "container.autowiring.strict_mode" parameter
 | 
			
		||||
        // if you are using symfony/dependency-injection 4.0+ as it's the default behavior
 | 
			
		||||
        $container->setParameter('container.autowiring.strict_mode', true);
 | 
			
		||||
        $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)
 | 
			
		||||
    {
 | 
			
		||||
        $confDir = $this->getProjectDir().'/config';
 | 
			
		||||
 | 
			
		||||
        $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob');
 | 
			
		||||
        $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob');
 | 
			
		||||
        $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function bootstrapCli(array &$argv)
 | 
			
		||||
    {
 | 
			
		||||
        // consume --env and --no-debug from the command line
 | 
			
		||||
 | 
			
		||||
        // when using symfony/console v4.2 or higher, this should
 | 
			
		||||
        // be replaced by a call to Application::bootstrapEnv()
 | 
			
		||||
 | 
			
		||||
        for ($i = 0; $i < \count($argv) && '--' !== $v = $argv[$i]; ++$i) {
 | 
			
		||||
            if ('--no-debug' === $v) {
 | 
			
		||||
                putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
 | 
			
		||||
                $argvUnset[$i] = true;
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for ($i = 0; $i < \count($argv) && '--' !== $v = $argv[$i]; ++$i) {
 | 
			
		||||
            if (!$v || '-' !== $v[0] || !preg_match('/^-(?:-env(?:=|$)|e=?)(.*)$/D', $v, $v)) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            if (!empty($v[1]) || !empty($argv[1 + $i])) {
 | 
			
		||||
                putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = empty($v[1]) ? $argv[1 + $i] : $v[1]);
 | 
			
		||||
                $argvUnset[$i] = $argvUnset[$i + empty($v[1])] = true;
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!empty($argvUnset)) {
 | 
			
		||||
            $argv = array_values(array_diff_key($argv, $argvUnset));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function bootstrapEnv($env = null)
 | 
			
		||||
    {
 | 
			
		||||
        if (null !== $env) {
 | 
			
		||||
            putenv('APP_ENV='.$_SERVER['APP_ENV'] = $env);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ('prod' !== $_SERVER['APP_ENV'] = isset($_SERVER['APP_ENV']) ? $_SERVER['APP_ENV'] : (isset($_ENV['APP_ENV']) ? $_ENV['APP_ENV'] : null)) {
 | 
			
		||||
            if (!class_exists(Dotenv::class)) {
 | 
			
		||||
                throw new \RuntimeException('The "APP_ENV" environment variable is not defined. You need to set it or run "composer require symfony/dotenv" to load it from a ".env" file.');
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // when using symfony/dotenv v4.2 or higher, this call and the related methods
 | 
			
		||||
            // below should be replaced by a call to the new Dotenv::loadEnv() method
 | 
			
		||||
            self::loadEnv(new Dotenv(), \dirname(__DIR__).'/.env');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = isset($_SERVER['APP_ENV']) ? $_SERVER['APP_ENV'] : 'dev';
 | 
			
		||||
        $_SERVER['APP_DEBUG'] = isset($_SERVER['APP_DEBUG']) ? $_SERVER['APP_DEBUG'] : (isset($_ENV['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';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static function loadEnv(Dotenv $dotenv, $path)
 | 
			
		||||
    {
 | 
			
		||||
        if (file_exists($path) || !file_exists($p = "$path.dist")) {
 | 
			
		||||
            $dotenv->load($path);
 | 
			
		||||
        } else {
 | 
			
		||||
            $dotenv->load($p);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (null === $env = isset($_SERVER['APP_ENV']) ? $_SERVER['APP_ENV'] : (isset($_ENV['APP_ENV']) ? $_ENV['APP_ENV'] : null)) {
 | 
			
		||||
            $dotenv->populate(array('APP_ENV' => $env = 'dev'));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ('test' !== $env && file_exists($p = "$path.local")) {
 | 
			
		||||
            $dotenv->load($p);
 | 
			
		||||
            $env = isset($_SERVER['APP_ENV']) ? $_SERVER['APP_ENV'] : (isset($_ENV['APP_ENV']) ? $_ENV['APP_ENV'] : $env);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (file_exists($p = "$path.$env")) {
 | 
			
		||||
            $dotenv->load($p);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (file_exists($p = "$path.$env.local")) {
 | 
			
		||||
            $dotenv->load($p);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,377 @@
 | 
			
		||||
{
 | 
			
		||||
    "doctrine/annotations": {
 | 
			
		||||
        "version": "1.0",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "1.0",
 | 
			
		||||
            "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/cache": {
 | 
			
		||||
        "version": "v1.8.0"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/collections": {
 | 
			
		||||
        "version": "v1.5.0"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/common": {
 | 
			
		||||
        "version": "v2.9.0"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/data-fixtures": {
 | 
			
		||||
        "version": "v1.3.1"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/dbal": {
 | 
			
		||||
        "version": "v2.8.0"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/doctrine-bundle": {
 | 
			
		||||
        "version": "1.6",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "1.6",
 | 
			
		||||
            "ref": "453e89b78ded666f351617baca5ae40d20622351"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/doctrine-cache-bundle": {
 | 
			
		||||
        "version": "1.3.5"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/doctrine-fixtures-bundle": {
 | 
			
		||||
        "version": "3.0",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.0",
 | 
			
		||||
            "ref": "fc52d86631a6dfd9fdf3381d0b7e3df2069e51b3"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/doctrine-migrations-bundle": {
 | 
			
		||||
        "version": "1.2",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "1.2",
 | 
			
		||||
            "ref": "c1431086fec31f17fbcfe6d6d7e92059458facc1"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/event-manager": {
 | 
			
		||||
        "version": "v1.0.0"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/inflector": {
 | 
			
		||||
        "version": "v1.3.0"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/instantiator": {
 | 
			
		||||
        "version": "1.1.0"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/lexer": {
 | 
			
		||||
        "version": "v1.0.1"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/migrations": {
 | 
			
		||||
        "version": "v1.8.1"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/orm": {
 | 
			
		||||
        "version": "v2.6.2"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/persistence": {
 | 
			
		||||
        "version": "v1.0.1"
 | 
			
		||||
    },
 | 
			
		||||
    "doctrine/reflection": {
 | 
			
		||||
        "version": "v1.0.0"
 | 
			
		||||
    },
 | 
			
		||||
    "easycorp/easy-log-handler": {
 | 
			
		||||
        "version": "1.0",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "1.0",
 | 
			
		||||
            "ref": "70062abc2cd58794d2a90274502f81b55cd9951b"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "friendsofsymfony/rest-bundle": {
 | 
			
		||||
        "version": "2.2",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes-contrib",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "2.2",
 | 
			
		||||
            "ref": "258300d52be6ad59b32a888d5ddafbf9638540ff"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "jdorn/sql-formatter": {
 | 
			
		||||
        "version": "v1.2.17"
 | 
			
		||||
    },
 | 
			
		||||
    "monolog/monolog": {
 | 
			
		||||
        "version": "1.24.0"
 | 
			
		||||
    },
 | 
			
		||||
    "nikic/php-parser": {
 | 
			
		||||
        "version": "v4.1.0"
 | 
			
		||||
    },
 | 
			
		||||
    "ocramius/package-versions": {
 | 
			
		||||
        "version": "1.3.0"
 | 
			
		||||
    },
 | 
			
		||||
    "ocramius/proxy-manager": {
 | 
			
		||||
        "version": "2.2.2"
 | 
			
		||||
    },
 | 
			
		||||
    "phpdocumentor/reflection-common": {
 | 
			
		||||
        "version": "1.0.1"
 | 
			
		||||
    },
 | 
			
		||||
    "phpdocumentor/reflection-docblock": {
 | 
			
		||||
        "version": "4.3.0"
 | 
			
		||||
    },
 | 
			
		||||
    "phpdocumentor/type-resolver": {
 | 
			
		||||
        "version": "0.4.0"
 | 
			
		||||
    },
 | 
			
		||||
    "psr/cache": {
 | 
			
		||||
        "version": "1.0.1"
 | 
			
		||||
    },
 | 
			
		||||
    "psr/container": {
 | 
			
		||||
        "version": "1.0.0"
 | 
			
		||||
    },
 | 
			
		||||
    "psr/log": {
 | 
			
		||||
        "version": "1.0.2"
 | 
			
		||||
    },
 | 
			
		||||
    "psr/simple-cache": {
 | 
			
		||||
        "version": "1.0.1"
 | 
			
		||||
    },
 | 
			
		||||
    "sensio/framework-extra-bundle": {
 | 
			
		||||
        "version": "5.2",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "5.2",
 | 
			
		||||
            "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/browser-kit": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/cache": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/config": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/console": {
 | 
			
		||||
        "version": "3.3",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.3",
 | 
			
		||||
            "ref": "b5026d7ffdb43b4d66f4cc091b1e6f94e6023986"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/css-selector": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/debug": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/debug-bundle": {
 | 
			
		||||
        "version": "4.1",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "4.1",
 | 
			
		||||
            "ref": "f8863cbad2f2e58c4b65fa1eac892ab189971bea"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/debug-pack": {
 | 
			
		||||
        "version": "v1.0.6"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/dependency-injection": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/doctrine-bridge": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/dom-crawler": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/dotenv": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/event-dispatcher": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/filesystem": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/finder": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/flex": {
 | 
			
		||||
        "version": "1.0",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "1.0",
 | 
			
		||||
            "ref": "b96338eb5155c5b97a80e7705abf30aa09c29167"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/framework-bundle": {
 | 
			
		||||
        "version": "3.3",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.3",
 | 
			
		||||
            "ref": "2230e9f42b10616b91a28d15ed3a2d984e0b6c10"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/http-foundation": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/http-kernel": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/inflector": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/maker-bundle": {
 | 
			
		||||
        "version": "1.0",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "1.0",
 | 
			
		||||
            "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/monolog-bridge": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/monolog-bundle": {
 | 
			
		||||
        "version": "3.1",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.1",
 | 
			
		||||
            "ref": "18ebf5a940573a20de06f9c4060101eeb438cf3d"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/orm-pack": {
 | 
			
		||||
        "version": "v1.0.5"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/phpunit-bridge": {
 | 
			
		||||
        "version": "4.1",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "4.1",
 | 
			
		||||
            "ref": "e637a1337f5faf0b2529b1c9a47de5e8286679f0"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/polyfill-mbstring": {
 | 
			
		||||
        "version": "v1.10.0"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/polyfill-php72": {
 | 
			
		||||
        "version": "v1.10.0"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/process": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/profiler-pack": {
 | 
			
		||||
        "version": "v1.0.3"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/property-access": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/property-info": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/routing": {
 | 
			
		||||
        "version": "4.0",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "4.0",
 | 
			
		||||
            "ref": "5f514d9d3b8a8aac3d62ae6a86b18b90ed0c7826"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/security": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/security-bundle": {
 | 
			
		||||
        "version": "3.3",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.3",
 | 
			
		||||
            "ref": "f8a63faa0d9521526499c0a8f403c9964ecb0527"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/serializer": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/serializer-pack": {
 | 
			
		||||
        "version": "v1.0.1"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/stopwatch": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/templating": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/test-pack": {
 | 
			
		||||
        "version": "v1.0.2"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/translation": {
 | 
			
		||||
        "version": "3.3",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.3",
 | 
			
		||||
            "ref": "1fb02a6e1c8f3d4232cce485c9afa868d63b115a"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/twig-bridge": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/twig-bundle": {
 | 
			
		||||
        "version": "3.3",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.3",
 | 
			
		||||
            "ref": "369b5b29dc52b2c190002825ae7ec24ab6f962dd"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/var-dumper": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/web-profiler-bundle": {
 | 
			
		||||
        "version": "3.3",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.3",
 | 
			
		||||
            "ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/web-server-bundle": {
 | 
			
		||||
        "version": "3.3",
 | 
			
		||||
        "recipe": {
 | 
			
		||||
            "repo": "github.com/symfony/recipes",
 | 
			
		||||
            "branch": "master",
 | 
			
		||||
            "version": "3.3",
 | 
			
		||||
            "ref": "dae9b39fd6717970be7601101ce5aa960bf53d9a"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "symfony/yaml": {
 | 
			
		||||
        "version": "v4.1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "twig/twig": {
 | 
			
		||||
        "version": "v2.5.0"
 | 
			
		||||
    },
 | 
			
		||||
    "webmozart/assert": {
 | 
			
		||||
        "version": "1.3.0"
 | 
			
		||||
    },
 | 
			
		||||
    "willdurand/jsonp-callback-validator": {
 | 
			
		||||
        "version": "v1.1.0"
 | 
			
		||||
    },
 | 
			
		||||
    "willdurand/negotiation": {
 | 
			
		||||
        "version": "v2.3.1"
 | 
			
		||||
    },
 | 
			
		||||
    "zendframework/zend-code": {
 | 
			
		||||
        "version": "3.3.1"
 | 
			
		||||
    },
 | 
			
		||||
    "zendframework/zend-eventmanager": {
 | 
			
		||||
        "version": "3.2.1"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,12 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
        <meta charset="UTF-8">
 | 
			
		||||
        <title>{% block title %}Welcome!{% endblock %}</title>
 | 
			
		||||
        {% block stylesheets %}{% endblock %}
 | 
			
		||||
    </head>
 | 
			
		||||
    <body>
 | 
			
		||||
        {% block body %}{% endblock %}
 | 
			
		||||
        {% block javascripts %}{% endblock %}
 | 
			
		||||
    </body>
 | 
			
		||||
</html>
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue