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