├── .env.dist ├── .gitignore ├── README.md ├── bin └── console ├── composer.json ├── composer.lock ├── config ├── bundles.php ├── packages │ ├── dev │ │ └── routing.yaml │ ├── framework.yaml │ ├── routing.yaml │ └── test │ │ ├── framework.yaml │ │ └── routing.yaml ├── routes.yaml ├── routes │ └── annotations.yaml └── services.yaml ├── public ├── index.php └── static ├── source └── index.md ├── src ├── Controller │ ├── .gitignore │ └── UserController.php ├── DataSources │ └── Users.php ├── Kernel.php ├── Models │ └── User.php ├── Repositories │ └── UserRepository.php └── Requests │ └── UserRequests.php ├── symfony.lock └── templates ├── layouts └── default.html.twig └── user.html.twig /.env.dist: -------------------------------------------------------------------------------- 1 | # This file is a "template" of which env vars need to be defined for your application 2 | # Copy this file to .env file for development, create environment variables when deploying to production 3 | # https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration 4 | 5 | ###> symfony/framework-bundle ### 6 | APP_ENV=dev 7 | APP_SECRET=d158bff9935818cd67bace04735180e5 8 | #TRUSTED_PROXIES=127.0.0.1,127.0.0.2 9 | #TRUSTED_HOSTS=localhost,example.com 10 | ###< symfony/framework-bundle ### 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.env 2 | /public/bundles/ 3 | /var/ 4 | /vendor/ 5 | /build-dev/ 6 | 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Symfony & Doctrine Static Website Generator 2 | 3 | This is an example Symfony Flex application which pulls together the following 4 | packages to create a static website generator: 5 | 6 | - [doctrine/skeleton-mapper](https://github.com/doctrine/skeleton-mapper) 7 | - [doctrine/static-website-generator](https://github.com/doctrine/static-website-generator) 8 | - [doctrine/doctrine-skeleton-mapper-bundle](https://github.com/doctrine/DoctrineSkeletonMapperBundle) 9 | - [doctrine/doctrine-static-website-generator-bundle](https://github.com/doctrine/DoctrineStaticWebsiteGeneratorBundle) 10 | 11 | ## Setup 12 | 13 | First clone the repository: 14 | 15 | $ git clone git@github.com:jwage/symfony-doctrine-static-website-generator.git 16 | 17 | Now run composer install: 18 | 19 | $ cd symfony-doctrine-static-website-generator 20 | $ composer install 21 | 22 | ## Building 23 | 24 | Now you are ready to build the example static website: 25 | 26 | $ php bin/console doctrine:build-website 27 | 28 | ## Usage 29 | 30 | ### Routes 31 | 32 | Take a look at the parameter named `doctrine.static_website.routes` in [config/routes.yml](https://github.com/jwage/symfony-doctrine-static-website-generator/blob/master/config/services.yaml) 33 | for defining routes for your static website. 34 | 35 | ```yaml 36 | parameters: 37 | doctrine.static_website.routes: 38 | homepage: 39 | path: /index.html 40 | controller: App\Controller\UserController::index 41 | 42 | user: 43 | path: /user/{username}.html 44 | controller: App\Controller\UserController::user 45 | provider: App\Requests\UserRequests::getUsers 46 | ``` 47 | 48 | ### Controllers 49 | 50 | In your `src/Controller` directory, you can create plain old PHP classes for controllers and map them 51 | using routes. 52 | 53 | Once you have created a controller, you have to configure a `ControllerProvider` in the 54 | `config/services.yaml` file and pass it your controllers: 55 | 56 | ```yaml 57 | services: 58 | # ... 59 | 60 | Doctrine\StaticWebsiteGenerator\Controller\ControllerProvider: 61 | arguments: 62 | - 63 | - '@App\Controller\UserController' 64 | 65 | ``` 66 | 67 | Here is what the `UserController` looks like: 68 | 69 | ```php 70 | userRepository = $userRepository; 86 | } 87 | 88 | public function index() : Response 89 | { 90 | $users = $this->userRepository->findAll(); 91 | 92 | return new Response([ 93 | 'users' => $users 94 | ]); 95 | } 96 | 97 | public function user(string $username) : Response 98 | { 99 | $user = $this->userRepository->findOneByUsername($username); 100 | 101 | return new Response([ 102 | 'user' => $user, 103 | ], '/user.html.twig'); 104 | } 105 | } 106 | ``` 107 | 108 | ### Data Sources 109 | 110 | Data sources are a simple way to use a PHP service to provide data for a Doctrine Skeleton Mapper model. They 111 | are contained in the `src/DataSources` directory and must implement the `Doctrine\SkeletonMapper\DataSource\DataSource` 112 | interface. 113 | 114 | Here is what the `Users` data source looks like: 115 | 116 | ```php 117 | 'jwage'], 134 | ['username' => 'ocramius'], 135 | ['username' => 'ccovey'], 136 | ]; 137 | } 138 | } 139 | ``` 140 | 141 | ### Models 142 | 143 | Models are contained in the `src/Models` directory and are plain PHP classes 144 | that must implement the following interfaces: 145 | 146 | - `Doctrine\SkeletonMapper\Hydrator\HydratableInterface` 147 | - `Doctrine\SkeletonMapper\Mapping\LoadMetadataInterface` 148 | 149 | Here is what the `User` model looks like: 150 | 151 | ```php 152 | setIdentifier(['username']); 171 | } 172 | 173 | /** 174 | * @param mixed[] $user 175 | */ 176 | public function hydrate(array $user, ObjectManagerInterface $objectManager) : void 177 | { 178 | $this->username = (string) ($user['username'] ?? ''); 179 | } 180 | 181 | public function getUsername() : string 182 | { 183 | return $this->username; 184 | } 185 | } 186 | ``` 187 | 188 | ### Object Repositories 189 | 190 | Object Repositories are contained in the `src/Repositories` directory and must extend the 191 | `Doctrine\SkeletonMapper\ObjectRepository\BasicObjectRepository` class. 192 | 193 | Here is what the `UserRepository` looks like: 194 | 195 | ```php 196 | findOneBy(['username' => $username]); 211 | 212 | return $user; 213 | } 214 | } 215 | ``` 216 | 217 | ### Requests 218 | 219 | You can dynamically generate static content by using a route, controller and provider. Take this `user` route 220 | for example: 221 | 222 | ```yaml 223 | parameters: 224 | doctrine.static_website.routes: 225 | # ... 226 | 227 | user: 228 | path: /user/{username}.html 229 | controller: App\Controller\UserController::user 230 | provider: App\Requests\UserRequests::getUsers 231 | ``` 232 | 233 | Note the `App\Requests\UserRequests` class: 234 | 235 | ```php 236 | userRepository = $userRepository; 255 | } 256 | 257 | public function getUsers() : RequestCollection 258 | { 259 | /** @var User[] $users */ 260 | $users = $this->userRepository->findAll(); 261 | 262 | $requests = []; 263 | 264 | foreach ($users as $user) { 265 | $requests[] = [ 266 | 'username' => $user->getUsername(), 267 | ]; 268 | } 269 | 270 | return new ArrayRequestCollection($requests); 271 | } 272 | } 273 | ``` 274 | 275 | For every user returned by the `getUsers` method, a `/user/{username}.html` file will be generated. 276 | 277 | ## New Flex Application 278 | 279 | You can also get started fresh with a brand new Flex application. I would love to make this a Symfony Flex recipe 280 | but for now you have to do it all manually but it is only a few steps. 281 | 282 | First create a brand new Flex application: 283 | 284 | $ composer create-project symfony/skeleton:4.1.* my-project 285 | $ cd my-project 286 | 287 | Now just install the `doctrine/doctrine-static-website-generator-bundle` package: 288 | 289 | $ composer require doctrine/doctrine-static-website-generator-bundle 290 | 291 | Add `DoctrineSkeletonMapperBundle` and `DoctrineStaticWebsiteGeneratorBundle` to the `config/bundles.php` 292 | file to enable the bundles: 293 | 294 | ```php 295 | ['all' => true], 299 | Doctrine\Bundle\DoctrineSkeletonMapperBundle\DoctrineSkeletonMapperBundle::class => ['all' => true], 300 | Doctrine\Bundle\DoctrineStaticWebsiteGeneratorBundle\DoctrineStaticWebsiteGeneratorBundle::class => ['all' => true], 301 | ]; 302 | ``` 303 | 304 | Create the following directories: 305 | 306 | $ mkdir source # source files 307 | $ mkdir templates # twig templates 308 | $ mkdir templates/layouts # twig layout files 309 | 310 | Create `templates/layouts/default.html.twig` and place the following code in it: 311 | 312 | ```html 313 | 314 | 315 | {{ site.title }} 316 | 317 | 318 | {% block content '' %} 319 | 320 | 321 | ``` 322 | 323 | Create your first file in `source` named `index.md` and place the following content inside: 324 | 325 | ```md 326 | Test 327 | ==== 328 | 329 | We are in a Symfony Flex application! 330 | ``` 331 | 332 | After you run `php bin/console doctrine:build-website` you will see the following file in the 333 | `build-dev` directory: 334 | 335 | ```html 336 | 337 | 338 | Symfony & Doctrine Static Website 339 | 340 | 341 |

Test

342 |

We are in a Symfony Flex application!

343 | 344 | 345 | ``` 346 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | load(__DIR__.'/../.env'); 23 | } 24 | 25 | $input = new ArgvInput(); 26 | $env = $input->getParameterOption(['--env', '-e'], $_SERVER['APP_ENV'] ?? 'dev', true); 27 | $debug = (bool) ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)) && !$input->hasParameterOption('--no-debug', true); 28 | 29 | if ($debug) { 30 | umask(0000); 31 | 32 | if (class_exists(Debug::class)) { 33 | Debug::enable(); 34 | } 35 | } 36 | 37 | $kernel = new Kernel($env, $debug); 38 | $application = new Application($kernel); 39 | $application->run($input); 40 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "project", 3 | "license": "proprietary", 4 | "require": { 5 | "php": "^7.1.3", 6 | "ext-ctype": "*", 7 | "ext-iconv": "*", 8 | "doctrine/doctrine-static-website-generator-bundle": "^0.0.1", 9 | "erusev/parsedown": "^1.7", 10 | "symfony/console": "*", 11 | "symfony/flex": "^1.1", 12 | "symfony/framework-bundle": "*", 13 | "symfony/yaml": "*" 14 | }, 15 | "require-dev": { 16 | "symfony/dotenv": "*", 17 | "symfony/maker-bundle": "^1.8" 18 | }, 19 | "config": { 20 | "preferred-install": { 21 | "*": "dist" 22 | }, 23 | "sort-packages": true 24 | }, 25 | "autoload": { 26 | "psr-4": { 27 | "App\\": "src/" 28 | } 29 | }, 30 | "autoload-dev": { 31 | "psr-4": { 32 | "App\\Tests\\": "tests/" 33 | } 34 | }, 35 | "replace": { 36 | "paragonie/random_compat": "2.*", 37 | "symfony/polyfill-ctype": "*", 38 | "symfony/polyfill-iconv": "*", 39 | "symfony/polyfill-php71": "*", 40 | "symfony/polyfill-php70": "*", 41 | "symfony/polyfill-php56": "*" 42 | }, 43 | "scripts": { 44 | "auto-scripts": { 45 | "cache:clear": "symfony-cmd", 46 | "assets:install %PUBLIC_DIR%": "symfony-cmd" 47 | }, 48 | "post-install-cmd": [ 49 | "@auto-scripts" 50 | ], 51 | "post-update-cmd": [ 52 | "@auto-scripts" 53 | ] 54 | }, 55 | "conflict": { 56 | "symfony/symfony": "*" 57 | }, 58 | "extra": { 59 | "symfony": { 60 | "allow-contrib": false, 61 | "require": "4.1.*" 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "e240745e0cec8363c2f3c49d96d44e55", 8 | "packages": [ 9 | { 10 | "name": "doctrine/annotations", 11 | "version": "v1.6.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/annotations.git", 15 | "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", 20 | "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "doctrine/lexer": "1.*", 25 | "php": "^7.1" 26 | }, 27 | "require-dev": { 28 | "doctrine/cache": "1.*", 29 | "phpunit/phpunit": "^6.4" 30 | }, 31 | "type": "library", 32 | "extra": { 33 | "branch-alias": { 34 | "dev-master": "1.6.x-dev" 35 | } 36 | }, 37 | "autoload": { 38 | "psr-4": { 39 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 40 | } 41 | }, 42 | "notification-url": "https://packagist.org/downloads/", 43 | "license": [ 44 | "MIT" 45 | ], 46 | "authors": [ 47 | { 48 | "name": "Roman Borschel", 49 | "email": "roman@code-factory.org" 50 | }, 51 | { 52 | "name": "Benjamin Eberlei", 53 | "email": "kontakt@beberlei.de" 54 | }, 55 | { 56 | "name": "Guilherme Blanco", 57 | "email": "guilhermeblanco@gmail.com" 58 | }, 59 | { 60 | "name": "Jonathan Wage", 61 | "email": "jonwage@gmail.com" 62 | }, 63 | { 64 | "name": "Johannes Schmitt", 65 | "email": "schmittjoh@gmail.com" 66 | } 67 | ], 68 | "description": "Docblock Annotations Parser", 69 | "homepage": "http://www.doctrine-project.org", 70 | "keywords": [ 71 | "annotations", 72 | "docblock", 73 | "parser" 74 | ], 75 | "time": "2017-12-06T07:11:42+00:00" 76 | }, 77 | { 78 | "name": "doctrine/cache", 79 | "version": "v1.8.0", 80 | "source": { 81 | "type": "git", 82 | "url": "https://github.com/doctrine/cache.git", 83 | "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" 84 | }, 85 | "dist": { 86 | "type": "zip", 87 | "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", 88 | "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", 89 | "shasum": "" 90 | }, 91 | "require": { 92 | "php": "~7.1" 93 | }, 94 | "conflict": { 95 | "doctrine/common": ">2.2,<2.4" 96 | }, 97 | "require-dev": { 98 | "alcaeus/mongo-php-adapter": "^1.1", 99 | "doctrine/coding-standard": "^4.0", 100 | "mongodb/mongodb": "^1.1", 101 | "phpunit/phpunit": "^7.0", 102 | "predis/predis": "~1.0" 103 | }, 104 | "suggest": { 105 | "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" 106 | }, 107 | "type": "library", 108 | "extra": { 109 | "branch-alias": { 110 | "dev-master": "1.8.x-dev" 111 | } 112 | }, 113 | "autoload": { 114 | "psr-4": { 115 | "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" 116 | } 117 | }, 118 | "notification-url": "https://packagist.org/downloads/", 119 | "license": [ 120 | "MIT" 121 | ], 122 | "authors": [ 123 | { 124 | "name": "Roman Borschel", 125 | "email": "roman@code-factory.org" 126 | }, 127 | { 128 | "name": "Benjamin Eberlei", 129 | "email": "kontakt@beberlei.de" 130 | }, 131 | { 132 | "name": "Guilherme Blanco", 133 | "email": "guilhermeblanco@gmail.com" 134 | }, 135 | { 136 | "name": "Jonathan Wage", 137 | "email": "jonwage@gmail.com" 138 | }, 139 | { 140 | "name": "Johannes Schmitt", 141 | "email": "schmittjoh@gmail.com" 142 | } 143 | ], 144 | "description": "Caching library offering an object-oriented API for many cache backends", 145 | "homepage": "https://www.doctrine-project.org", 146 | "keywords": [ 147 | "cache", 148 | "caching" 149 | ], 150 | "time": "2018-08-21T18:01:43+00:00" 151 | }, 152 | { 153 | "name": "doctrine/collections", 154 | "version": "v1.5.0", 155 | "source": { 156 | "type": "git", 157 | "url": "https://github.com/doctrine/collections.git", 158 | "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" 159 | }, 160 | "dist": { 161 | "type": "zip", 162 | "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", 163 | "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", 164 | "shasum": "" 165 | }, 166 | "require": { 167 | "php": "^7.1" 168 | }, 169 | "require-dev": { 170 | "doctrine/coding-standard": "~0.1@dev", 171 | "phpunit/phpunit": "^5.7" 172 | }, 173 | "type": "library", 174 | "extra": { 175 | "branch-alias": { 176 | "dev-master": "1.3.x-dev" 177 | } 178 | }, 179 | "autoload": { 180 | "psr-0": { 181 | "Doctrine\\Common\\Collections\\": "lib/" 182 | } 183 | }, 184 | "notification-url": "https://packagist.org/downloads/", 185 | "license": [ 186 | "MIT" 187 | ], 188 | "authors": [ 189 | { 190 | "name": "Roman Borschel", 191 | "email": "roman@code-factory.org" 192 | }, 193 | { 194 | "name": "Benjamin Eberlei", 195 | "email": "kontakt@beberlei.de" 196 | }, 197 | { 198 | "name": "Guilherme Blanco", 199 | "email": "guilhermeblanco@gmail.com" 200 | }, 201 | { 202 | "name": "Jonathan Wage", 203 | "email": "jonwage@gmail.com" 204 | }, 205 | { 206 | "name": "Johannes Schmitt", 207 | "email": "schmittjoh@gmail.com" 208 | } 209 | ], 210 | "description": "Collections Abstraction library", 211 | "homepage": "http://www.doctrine-project.org", 212 | "keywords": [ 213 | "array", 214 | "collections", 215 | "iterator" 216 | ], 217 | "time": "2017-07-22T10:37:32+00:00" 218 | }, 219 | { 220 | "name": "doctrine/common", 221 | "version": "v2.9.0", 222 | "source": { 223 | "type": "git", 224 | "url": "https://github.com/doctrine/common.git", 225 | "reference": "a210246d286c77d2b89040f8691ba7b3a713d2c1" 226 | }, 227 | "dist": { 228 | "type": "zip", 229 | "url": "https://api.github.com/repos/doctrine/common/zipball/a210246d286c77d2b89040f8691ba7b3a713d2c1", 230 | "reference": "a210246d286c77d2b89040f8691ba7b3a713d2c1", 231 | "shasum": "" 232 | }, 233 | "require": { 234 | "doctrine/annotations": "^1.0", 235 | "doctrine/cache": "^1.0", 236 | "doctrine/collections": "^1.0", 237 | "doctrine/event-manager": "^1.0", 238 | "doctrine/inflector": "^1.0", 239 | "doctrine/lexer": "^1.0", 240 | "doctrine/persistence": "^1.0", 241 | "doctrine/reflection": "^1.0", 242 | "php": "^7.1" 243 | }, 244 | "require-dev": { 245 | "doctrine/coding-standard": "^1.0", 246 | "phpunit/phpunit": "^6.3", 247 | "squizlabs/php_codesniffer": "^3.0", 248 | "symfony/phpunit-bridge": "^4.0.5" 249 | }, 250 | "type": "library", 251 | "extra": { 252 | "branch-alias": { 253 | "dev-master": "2.9.x-dev" 254 | } 255 | }, 256 | "autoload": { 257 | "psr-4": { 258 | "Doctrine\\Common\\": "lib/Doctrine/Common" 259 | } 260 | }, 261 | "notification-url": "https://packagist.org/downloads/", 262 | "license": [ 263 | "MIT" 264 | ], 265 | "authors": [ 266 | { 267 | "name": "Roman Borschel", 268 | "email": "roman@code-factory.org" 269 | }, 270 | { 271 | "name": "Benjamin Eberlei", 272 | "email": "kontakt@beberlei.de" 273 | }, 274 | { 275 | "name": "Guilherme Blanco", 276 | "email": "guilhermeblanco@gmail.com" 277 | }, 278 | { 279 | "name": "Jonathan Wage", 280 | "email": "jonwage@gmail.com" 281 | }, 282 | { 283 | "name": "Johannes Schmitt", 284 | "email": "schmittjoh@gmail.com" 285 | }, 286 | { 287 | "name": "Marco Pivetta", 288 | "email": "ocramius@gmail.com" 289 | } 290 | ], 291 | "description": "Common Library for Doctrine projects", 292 | "homepage": "https://www.doctrine-project.org", 293 | "keywords": [ 294 | "annotations", 295 | "collections", 296 | "eventmanager", 297 | "persistence", 298 | "spl" 299 | ], 300 | "time": "2018-07-12T21:16:12+00:00" 301 | }, 302 | { 303 | "name": "doctrine/doctrine-skeleton-mapper-bundle", 304 | "version": "0.0.1", 305 | "source": { 306 | "type": "git", 307 | "url": "https://github.com/doctrine/DoctrineSkeletonMapperBundle.git", 308 | "reference": "2927f174d07a09972cf7956167bbf25194f6a90d" 309 | }, 310 | "dist": { 311 | "type": "zip", 312 | "url": "https://api.github.com/repos/doctrine/DoctrineSkeletonMapperBundle/zipball/2927f174d07a09972cf7956167bbf25194f6a90d", 313 | "reference": "2927f174d07a09972cf7956167bbf25194f6a90d", 314 | "shasum": "" 315 | }, 316 | "require": { 317 | "doctrine/skeleton-mapper": "^0.0.1", 318 | "php": "^7.1", 319 | "symfony/config": "^4.1", 320 | "symfony/dependency-injection": "^4.1" 321 | }, 322 | "require-dev": { 323 | "doctrine/coding-standard": "^5.0", 324 | "phpstan/phpstan": "^0.10", 325 | "phpstan/phpstan-deprecation-rules": "^0.10", 326 | "phpstan/phpstan-phpunit": "^0.10", 327 | "phpstan/phpstan-strict-rules": "^0.10", 328 | "phpunit/phpunit": "^7.0" 329 | }, 330 | "type": "library", 331 | "autoload": { 332 | "psr-4": { 333 | "Doctrine\\Bundle\\DoctrineSkeletonMapperBundle\\": "" 334 | } 335 | }, 336 | "notification-url": "https://packagist.org/downloads/", 337 | "license": [ 338 | "MIT" 339 | ], 340 | "authors": [ 341 | { 342 | "name": "Jonathan H. Wage", 343 | "email": "jonwage@gmail.com", 344 | "homepage": "https://jwage.com" 345 | } 346 | ], 347 | "description": "Symfony DoctrineSkeletonMapperBundle", 348 | "time": "2018-10-22T22:48:11+00:00" 349 | }, 350 | { 351 | "name": "doctrine/doctrine-static-website-generator-bundle", 352 | "version": "0.0.1", 353 | "source": { 354 | "type": "git", 355 | "url": "https://github.com/doctrine/DoctrineStaticWebsiteGeneratorBundle.git", 356 | "reference": "9804001d5e71d4316db62345c12dcfc0acc1f6f4" 357 | }, 358 | "dist": { 359 | "type": "zip", 360 | "url": "https://api.github.com/repos/doctrine/DoctrineStaticWebsiteGeneratorBundle/zipball/9804001d5e71d4316db62345c12dcfc0acc1f6f4", 361 | "reference": "9804001d5e71d4316db62345c12dcfc0acc1f6f4", 362 | "shasum": "" 363 | }, 364 | "require": { 365 | "doctrine/doctrine-skeleton-mapper-bundle": "^0.0.1", 366 | "doctrine/rst-parser": "^0.0.1", 367 | "doctrine/skeleton-mapper": "^0.0.1", 368 | "doctrine/static-website-generator": "^0.0.1", 369 | "erusev/parsedown": "^1.7", 370 | "php": "^7.1", 371 | "symfony/config": "^4.1", 372 | "symfony/dependency-injection": "^4.1", 373 | "symfony/framework-bundle": "^4.1" 374 | }, 375 | "require-dev": { 376 | "doctrine/coding-standard": "^5.0", 377 | "phpstan/phpstan": "^0.10", 378 | "phpstan/phpstan-deprecation-rules": "^0.10", 379 | "phpstan/phpstan-phpunit": "^0.10", 380 | "phpstan/phpstan-strict-rules": "^0.10", 381 | "phpunit/phpunit": "^7.0" 382 | }, 383 | "type": "library", 384 | "autoload": { 385 | "psr-4": { 386 | "Doctrine\\Bundle\\DoctrineStaticWebsiteGeneratorBundle\\": "" 387 | } 388 | }, 389 | "notification-url": "https://packagist.org/downloads/", 390 | "license": [ 391 | "MIT" 392 | ], 393 | "authors": [ 394 | { 395 | "name": "Jonathan H. Wage", 396 | "email": "jonwage@gmail.com", 397 | "homepage": "https://jwage.com" 398 | } 399 | ], 400 | "description": "Symfony DoctrineSkeletonMapperBundle", 401 | "time": "2018-10-22T23:00:17+00:00" 402 | }, 403 | { 404 | "name": "doctrine/event-manager", 405 | "version": "v1.0.0", 406 | "source": { 407 | "type": "git", 408 | "url": "https://github.com/doctrine/event-manager.git", 409 | "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" 410 | }, 411 | "dist": { 412 | "type": "zip", 413 | "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", 414 | "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", 415 | "shasum": "" 416 | }, 417 | "require": { 418 | "php": "^7.1" 419 | }, 420 | "conflict": { 421 | "doctrine/common": "<2.9@dev" 422 | }, 423 | "require-dev": { 424 | "doctrine/coding-standard": "^4.0", 425 | "phpunit/phpunit": "^7.0" 426 | }, 427 | "type": "library", 428 | "extra": { 429 | "branch-alias": { 430 | "dev-master": "1.0.x-dev" 431 | } 432 | }, 433 | "autoload": { 434 | "psr-4": { 435 | "Doctrine\\Common\\": "lib/Doctrine/Common" 436 | } 437 | }, 438 | "notification-url": "https://packagist.org/downloads/", 439 | "license": [ 440 | "MIT" 441 | ], 442 | "authors": [ 443 | { 444 | "name": "Roman Borschel", 445 | "email": "roman@code-factory.org" 446 | }, 447 | { 448 | "name": "Benjamin Eberlei", 449 | "email": "kontakt@beberlei.de" 450 | }, 451 | { 452 | "name": "Guilherme Blanco", 453 | "email": "guilhermeblanco@gmail.com" 454 | }, 455 | { 456 | "name": "Jonathan Wage", 457 | "email": "jonwage@gmail.com" 458 | }, 459 | { 460 | "name": "Johannes Schmitt", 461 | "email": "schmittjoh@gmail.com" 462 | }, 463 | { 464 | "name": "Marco Pivetta", 465 | "email": "ocramius@gmail.com" 466 | } 467 | ], 468 | "description": "Doctrine Event Manager component", 469 | "homepage": "https://www.doctrine-project.org/projects/event-manager.html", 470 | "keywords": [ 471 | "event", 472 | "eventdispatcher", 473 | "eventmanager" 474 | ], 475 | "time": "2018-06-11T11:59:03+00:00" 476 | }, 477 | { 478 | "name": "doctrine/inflector", 479 | "version": "v1.3.0", 480 | "source": { 481 | "type": "git", 482 | "url": "https://github.com/doctrine/inflector.git", 483 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a" 484 | }, 485 | "dist": { 486 | "type": "zip", 487 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", 488 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a", 489 | "shasum": "" 490 | }, 491 | "require": { 492 | "php": "^7.1" 493 | }, 494 | "require-dev": { 495 | "phpunit/phpunit": "^6.2" 496 | }, 497 | "type": "library", 498 | "extra": { 499 | "branch-alias": { 500 | "dev-master": "1.3.x-dev" 501 | } 502 | }, 503 | "autoload": { 504 | "psr-4": { 505 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 506 | } 507 | }, 508 | "notification-url": "https://packagist.org/downloads/", 509 | "license": [ 510 | "MIT" 511 | ], 512 | "authors": [ 513 | { 514 | "name": "Roman Borschel", 515 | "email": "roman@code-factory.org" 516 | }, 517 | { 518 | "name": "Benjamin Eberlei", 519 | "email": "kontakt@beberlei.de" 520 | }, 521 | { 522 | "name": "Guilherme Blanco", 523 | "email": "guilhermeblanco@gmail.com" 524 | }, 525 | { 526 | "name": "Jonathan Wage", 527 | "email": "jonwage@gmail.com" 528 | }, 529 | { 530 | "name": "Johannes Schmitt", 531 | "email": "schmittjoh@gmail.com" 532 | } 533 | ], 534 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 535 | "homepage": "http://www.doctrine-project.org", 536 | "keywords": [ 537 | "inflection", 538 | "pluralize", 539 | "singularize", 540 | "string" 541 | ], 542 | "time": "2018-01-09T20:05:19+00:00" 543 | }, 544 | { 545 | "name": "doctrine/instantiator", 546 | "version": "1.1.0", 547 | "source": { 548 | "type": "git", 549 | "url": "https://github.com/doctrine/instantiator.git", 550 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" 551 | }, 552 | "dist": { 553 | "type": "zip", 554 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 555 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 556 | "shasum": "" 557 | }, 558 | "require": { 559 | "php": "^7.1" 560 | }, 561 | "require-dev": { 562 | "athletic/athletic": "~0.1.8", 563 | "ext-pdo": "*", 564 | "ext-phar": "*", 565 | "phpunit/phpunit": "^6.2.3", 566 | "squizlabs/php_codesniffer": "^3.0.2" 567 | }, 568 | "type": "library", 569 | "extra": { 570 | "branch-alias": { 571 | "dev-master": "1.2.x-dev" 572 | } 573 | }, 574 | "autoload": { 575 | "psr-4": { 576 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 577 | } 578 | }, 579 | "notification-url": "https://packagist.org/downloads/", 580 | "license": [ 581 | "MIT" 582 | ], 583 | "authors": [ 584 | { 585 | "name": "Marco Pivetta", 586 | "email": "ocramius@gmail.com", 587 | "homepage": "http://ocramius.github.com/" 588 | } 589 | ], 590 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 591 | "homepage": "https://github.com/doctrine/instantiator", 592 | "keywords": [ 593 | "constructor", 594 | "instantiate" 595 | ], 596 | "time": "2017-07-22T11:58:36+00:00" 597 | }, 598 | { 599 | "name": "doctrine/lexer", 600 | "version": "v1.0.1", 601 | "source": { 602 | "type": "git", 603 | "url": "https://github.com/doctrine/lexer.git", 604 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 605 | }, 606 | "dist": { 607 | "type": "zip", 608 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 609 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 610 | "shasum": "" 611 | }, 612 | "require": { 613 | "php": ">=5.3.2" 614 | }, 615 | "type": "library", 616 | "extra": { 617 | "branch-alias": { 618 | "dev-master": "1.0.x-dev" 619 | } 620 | }, 621 | "autoload": { 622 | "psr-0": { 623 | "Doctrine\\Common\\Lexer\\": "lib/" 624 | } 625 | }, 626 | "notification-url": "https://packagist.org/downloads/", 627 | "license": [ 628 | "MIT" 629 | ], 630 | "authors": [ 631 | { 632 | "name": "Roman Borschel", 633 | "email": "roman@code-factory.org" 634 | }, 635 | { 636 | "name": "Guilherme Blanco", 637 | "email": "guilhermeblanco@gmail.com" 638 | }, 639 | { 640 | "name": "Johannes Schmitt", 641 | "email": "schmittjoh@gmail.com" 642 | } 643 | ], 644 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 645 | "homepage": "http://www.doctrine-project.org", 646 | "keywords": [ 647 | "lexer", 648 | "parser" 649 | ], 650 | "time": "2014-09-09T13:34:57+00:00" 651 | }, 652 | { 653 | "name": "doctrine/persistence", 654 | "version": "v1.0.1", 655 | "source": { 656 | "type": "git", 657 | "url": "https://github.com/doctrine/persistence.git", 658 | "reference": "af1ec238659a83e320f03e0e454e200f689b4b97" 659 | }, 660 | "dist": { 661 | "type": "zip", 662 | "url": "https://api.github.com/repos/doctrine/persistence/zipball/af1ec238659a83e320f03e0e454e200f689b4b97", 663 | "reference": "af1ec238659a83e320f03e0e454e200f689b4b97", 664 | "shasum": "" 665 | }, 666 | "require": { 667 | "doctrine/annotations": "^1.0", 668 | "doctrine/cache": "^1.0", 669 | "doctrine/collections": "^1.0", 670 | "doctrine/event-manager": "^1.0", 671 | "doctrine/reflection": "^1.0", 672 | "php": "^7.1" 673 | }, 674 | "conflict": { 675 | "doctrine/common": "<2.9@dev" 676 | }, 677 | "require-dev": { 678 | "doctrine/coding-standard": "^4.0", 679 | "phpstan/phpstan": "^0.8", 680 | "phpunit/phpunit": "^7.0" 681 | }, 682 | "type": "library", 683 | "extra": { 684 | "branch-alias": { 685 | "dev-master": "1.0.x-dev" 686 | } 687 | }, 688 | "autoload": { 689 | "psr-4": { 690 | "Doctrine\\Common\\": "lib/Doctrine/Common" 691 | } 692 | }, 693 | "notification-url": "https://packagist.org/downloads/", 694 | "license": [ 695 | "MIT" 696 | ], 697 | "authors": [ 698 | { 699 | "name": "Roman Borschel", 700 | "email": "roman@code-factory.org" 701 | }, 702 | { 703 | "name": "Benjamin Eberlei", 704 | "email": "kontakt@beberlei.de" 705 | }, 706 | { 707 | "name": "Guilherme Blanco", 708 | "email": "guilhermeblanco@gmail.com" 709 | }, 710 | { 711 | "name": "Jonathan Wage", 712 | "email": "jonwage@gmail.com" 713 | }, 714 | { 715 | "name": "Johannes Schmitt", 716 | "email": "schmittjoh@gmail.com" 717 | }, 718 | { 719 | "name": "Marco Pivetta", 720 | "email": "ocramius@gmail.com" 721 | } 722 | ], 723 | "description": "Doctrine Persistence abstractions.", 724 | "homepage": "https://doctrine-project.org/projects/persistence.html", 725 | "keywords": [ 726 | "persistence" 727 | ], 728 | "time": "2018-07-12T12:37:50+00:00" 729 | }, 730 | { 731 | "name": "doctrine/reflection", 732 | "version": "v1.0.0", 733 | "source": { 734 | "type": "git", 735 | "url": "https://github.com/doctrine/reflection.git", 736 | "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6" 737 | }, 738 | "dist": { 739 | "type": "zip", 740 | "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6", 741 | "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6", 742 | "shasum": "" 743 | }, 744 | "require": { 745 | "doctrine/annotations": "^1.0", 746 | "ext-tokenizer": "*", 747 | "php": "^7.1" 748 | }, 749 | "require-dev": { 750 | "doctrine/coding-standard": "^4.0", 751 | "doctrine/common": "^2.8", 752 | "phpstan/phpstan": "^0.9.2", 753 | "phpstan/phpstan-phpunit": "^0.9.4", 754 | "phpunit/phpunit": "^7.0", 755 | "squizlabs/php_codesniffer": "^3.0" 756 | }, 757 | "type": "library", 758 | "extra": { 759 | "branch-alias": { 760 | "dev-master": "1.0.x-dev" 761 | } 762 | }, 763 | "autoload": { 764 | "psr-4": { 765 | "Doctrine\\Common\\": "lib/Doctrine/Common" 766 | } 767 | }, 768 | "notification-url": "https://packagist.org/downloads/", 769 | "license": [ 770 | "MIT" 771 | ], 772 | "authors": [ 773 | { 774 | "name": "Roman Borschel", 775 | "email": "roman@code-factory.org" 776 | }, 777 | { 778 | "name": "Benjamin Eberlei", 779 | "email": "kontakt@beberlei.de" 780 | }, 781 | { 782 | "name": "Guilherme Blanco", 783 | "email": "guilhermeblanco@gmail.com" 784 | }, 785 | { 786 | "name": "Jonathan Wage", 787 | "email": "jonwage@gmail.com" 788 | }, 789 | { 790 | "name": "Johannes Schmitt", 791 | "email": "schmittjoh@gmail.com" 792 | }, 793 | { 794 | "name": "Marco Pivetta", 795 | "email": "ocramius@gmail.com" 796 | } 797 | ], 798 | "description": "Doctrine Reflection component", 799 | "homepage": "https://www.doctrine-project.org/projects/reflection.html", 800 | "keywords": [ 801 | "reflection" 802 | ], 803 | "time": "2018-06-14T14:45:07+00:00" 804 | }, 805 | { 806 | "name": "doctrine/rst-parser", 807 | "version": "0.0.1", 808 | "source": { 809 | "type": "git", 810 | "url": "https://github.com/doctrine/rst-parser.git", 811 | "reference": "b95e50136f376b8e4529d21a7d83618669408b43" 812 | }, 813 | "dist": { 814 | "type": "zip", 815 | "url": "https://api.github.com/repos/doctrine/rst-parser/zipball/b95e50136f376b8e4529d21a7d83618669408b43", 816 | "reference": "b95e50136f376b8e4529d21a7d83618669408b43", 817 | "shasum": "" 818 | }, 819 | "require": { 820 | "php": "^7.1", 821 | "symfony/filesystem": "^4.1" 822 | }, 823 | "require-dev": { 824 | "doctrine/coding-standard": "^5.0", 825 | "phpstan/phpstan": "^0.10", 826 | "phpstan/phpstan-deprecation-rules": "^0.10", 827 | "phpstan/phpstan-phpunit": "^0.10", 828 | "phpstan/phpstan-strict-rules": "^0.10", 829 | "phpunit/phpunit": "^7.0" 830 | }, 831 | "type": "library", 832 | "autoload": { 833 | "psr-4": { 834 | "Doctrine\\RST\\": "lib/" 835 | } 836 | }, 837 | "notification-url": "https://packagist.org/downloads/", 838 | "license": [ 839 | "MIT" 840 | ], 841 | "authors": [ 842 | { 843 | "name": "Grégoire Passault", 844 | "email": "g.passault@gmail.com", 845 | "homepage": "http://www.gregwar.com/" 846 | }, 847 | { 848 | "name": "Jonathan H. Wage", 849 | "email": "jonwage@gmail.com", 850 | "homepage": "https://jwage.com" 851 | } 852 | ], 853 | "description": "PHP library to parse reStructuredText documents and generate HTML or LaTeX documents.", 854 | "homepage": "https://github.com/doctrine/rst-parser", 855 | "keywords": [ 856 | "html", 857 | "latex", 858 | "markup", 859 | "parser", 860 | "reStructuredText", 861 | "rst" 862 | ], 863 | "time": "2018-10-22T22:16:31+00:00" 864 | }, 865 | { 866 | "name": "doctrine/skeleton-mapper", 867 | "version": "0.0.1", 868 | "source": { 869 | "type": "git", 870 | "url": "https://github.com/doctrine/skeleton-mapper.git", 871 | "reference": "02fcf9d1f36a8e4d8a9addf360664cdc762dc3f9" 872 | }, 873 | "dist": { 874 | "type": "zip", 875 | "url": "https://api.github.com/repos/doctrine/skeleton-mapper/zipball/02fcf9d1f36a8e4d8a9addf360664cdc762dc3f9", 876 | "reference": "02fcf9d1f36a8e4d8a9addf360664cdc762dc3f9", 877 | "shasum": "" 878 | }, 879 | "require": { 880 | "doctrine/collections": "~1.5", 881 | "doctrine/common": "~2.9", 882 | "doctrine/instantiator": "^1.1", 883 | "php": "^7.1" 884 | }, 885 | "require-dev": { 886 | "doctrine/coding-standard": "^5.0", 887 | "phpstan/phpstan": "^0.10", 888 | "phpstan/phpstan-deprecation-rules": "^0.10", 889 | "phpstan/phpstan-phpunit": "^0.10", 890 | "phpstan/phpstan-strict-rules": "^0.10", 891 | "phpunit/phpunit": "~7.0" 892 | }, 893 | "type": "library", 894 | "extra": { 895 | "branch-alias": { 896 | "dev-master": "1.0.x-dev" 897 | } 898 | }, 899 | "autoload": { 900 | "psr-0": { 901 | "Doctrine\\SkeletonMapper": "lib/", 902 | "Doctrine\\SkeletonMapper\\Tests": "tests/" 903 | } 904 | }, 905 | "notification-url": "https://packagist.org/downloads/", 906 | "license": [ 907 | "MIT" 908 | ], 909 | "authors": [ 910 | { 911 | "name": "Jonathan H. Wage", 912 | "email": "jonwage@gmail.com" 913 | } 914 | ], 915 | "description": "The Doctrine SkeletonMapper is a skeleton object mapper where you are 100% responsible for implementing the guts of the persistence operations. This means you write plain old PHP code for the data repositories, object repositories, object hydrators and object persisters.", 916 | "homepage": "https://www.doctrine-project.org/projects/skeleton-mapper.html", 917 | "keywords": [ 918 | "database", 919 | "object", 920 | "persistence" 921 | ], 922 | "time": "2018-10-17T01:58:30+00:00" 923 | }, 924 | { 925 | "name": "doctrine/static-website-generator", 926 | "version": "0.0.1", 927 | "source": { 928 | "type": "git", 929 | "url": "https://github.com/doctrine/static-website-generator.git", 930 | "reference": "e2030e5f5fa327fa9e9735f47832a519a8052c51" 931 | }, 932 | "dist": { 933 | "type": "zip", 934 | "url": "https://api.github.com/repos/doctrine/static-website-generator/zipball/e2030e5f5fa327fa9e9735f47832a519a8052c51", 935 | "reference": "e2030e5f5fa327fa9e9735f47832a519a8052c51", 936 | "shasum": "" 937 | }, 938 | "require": { 939 | "doctrine/collections": "^1.5", 940 | "doctrine/rst-parser": "^0.0.1", 941 | "doctrine/skeleton-mapper": "^0.0.1", 942 | "erusev/parsedown": "^1.7", 943 | "php": "^7.1", 944 | "symfony/filesystem": "^4.1", 945 | "symfony/finder": "^4.1", 946 | "symfony/http-kernel": "^4.1", 947 | "symfony/routing": "^4.1", 948 | "symfony/yaml": "^4.1", 949 | "twig/twig": "^2.5" 950 | }, 951 | "require-dev": { 952 | "doctrine/coding-standard": "^5.0", 953 | "phpstan/phpstan": "^0.10", 954 | "phpstan/phpstan-deprecation-rules": "^0.10", 955 | "phpstan/phpstan-phpunit": "^0.10", 956 | "phpstan/phpstan-strict-rules": "^0.10", 957 | "phpunit/phpunit": "^7.0" 958 | }, 959 | "type": "library", 960 | "autoload": { 961 | "psr-4": { 962 | "Doctrine\\StaticWebsiteGenerator\\": "lib/" 963 | } 964 | }, 965 | "notification-url": "https://packagist.org/downloads/", 966 | "license": [ 967 | "MIT" 968 | ], 969 | "authors": [ 970 | { 971 | "name": "Jonathan H. Wage", 972 | "email": "jonwage@gmail.com", 973 | "homepage": "https://jwage.com" 974 | } 975 | ], 976 | "description": "Doctrine Static Website Generator", 977 | "time": "2018-10-22T22:15:06+00:00" 978 | }, 979 | { 980 | "name": "erusev/parsedown", 981 | "version": "1.7.1", 982 | "source": { 983 | "type": "git", 984 | "url": "https://github.com/erusev/parsedown.git", 985 | "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" 986 | }, 987 | "dist": { 988 | "type": "zip", 989 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", 990 | "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", 991 | "shasum": "" 992 | }, 993 | "require": { 994 | "ext-mbstring": "*", 995 | "php": ">=5.3.0" 996 | }, 997 | "require-dev": { 998 | "phpunit/phpunit": "^4.8.35" 999 | }, 1000 | "type": "library", 1001 | "autoload": { 1002 | "psr-0": { 1003 | "Parsedown": "" 1004 | } 1005 | }, 1006 | "notification-url": "https://packagist.org/downloads/", 1007 | "license": [ 1008 | "MIT" 1009 | ], 1010 | "authors": [ 1011 | { 1012 | "name": "Emanuil Rusev", 1013 | "email": "hello@erusev.com", 1014 | "homepage": "http://erusev.com" 1015 | } 1016 | ], 1017 | "description": "Parser for Markdown.", 1018 | "homepage": "http://parsedown.org", 1019 | "keywords": [ 1020 | "markdown", 1021 | "parser" 1022 | ], 1023 | "time": "2018-03-08T01:11:30+00:00" 1024 | }, 1025 | { 1026 | "name": "psr/cache", 1027 | "version": "1.0.1", 1028 | "source": { 1029 | "type": "git", 1030 | "url": "https://github.com/php-fig/cache.git", 1031 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" 1032 | }, 1033 | "dist": { 1034 | "type": "zip", 1035 | "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", 1036 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", 1037 | "shasum": "" 1038 | }, 1039 | "require": { 1040 | "php": ">=5.3.0" 1041 | }, 1042 | "type": "library", 1043 | "extra": { 1044 | "branch-alias": { 1045 | "dev-master": "1.0.x-dev" 1046 | } 1047 | }, 1048 | "autoload": { 1049 | "psr-4": { 1050 | "Psr\\Cache\\": "src/" 1051 | } 1052 | }, 1053 | "notification-url": "https://packagist.org/downloads/", 1054 | "license": [ 1055 | "MIT" 1056 | ], 1057 | "authors": [ 1058 | { 1059 | "name": "PHP-FIG", 1060 | "homepage": "http://www.php-fig.org/" 1061 | } 1062 | ], 1063 | "description": "Common interface for caching libraries", 1064 | "keywords": [ 1065 | "cache", 1066 | "psr", 1067 | "psr-6" 1068 | ], 1069 | "time": "2016-08-06T20:24:11+00:00" 1070 | }, 1071 | { 1072 | "name": "psr/container", 1073 | "version": "1.0.0", 1074 | "source": { 1075 | "type": "git", 1076 | "url": "https://github.com/php-fig/container.git", 1077 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 1078 | }, 1079 | "dist": { 1080 | "type": "zip", 1081 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1082 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1083 | "shasum": "" 1084 | }, 1085 | "require": { 1086 | "php": ">=5.3.0" 1087 | }, 1088 | "type": "library", 1089 | "extra": { 1090 | "branch-alias": { 1091 | "dev-master": "1.0.x-dev" 1092 | } 1093 | }, 1094 | "autoload": { 1095 | "psr-4": { 1096 | "Psr\\Container\\": "src/" 1097 | } 1098 | }, 1099 | "notification-url": "https://packagist.org/downloads/", 1100 | "license": [ 1101 | "MIT" 1102 | ], 1103 | "authors": [ 1104 | { 1105 | "name": "PHP-FIG", 1106 | "homepage": "http://www.php-fig.org/" 1107 | } 1108 | ], 1109 | "description": "Common Container Interface (PHP FIG PSR-11)", 1110 | "homepage": "https://github.com/php-fig/container", 1111 | "keywords": [ 1112 | "PSR-11", 1113 | "container", 1114 | "container-interface", 1115 | "container-interop", 1116 | "psr" 1117 | ], 1118 | "time": "2017-02-14T16:28:37+00:00" 1119 | }, 1120 | { 1121 | "name": "psr/log", 1122 | "version": "1.0.2", 1123 | "source": { 1124 | "type": "git", 1125 | "url": "https://github.com/php-fig/log.git", 1126 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 1127 | }, 1128 | "dist": { 1129 | "type": "zip", 1130 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1131 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1132 | "shasum": "" 1133 | }, 1134 | "require": { 1135 | "php": ">=5.3.0" 1136 | }, 1137 | "type": "library", 1138 | "extra": { 1139 | "branch-alias": { 1140 | "dev-master": "1.0.x-dev" 1141 | } 1142 | }, 1143 | "autoload": { 1144 | "psr-4": { 1145 | "Psr\\Log\\": "Psr/Log/" 1146 | } 1147 | }, 1148 | "notification-url": "https://packagist.org/downloads/", 1149 | "license": [ 1150 | "MIT" 1151 | ], 1152 | "authors": [ 1153 | { 1154 | "name": "PHP-FIG", 1155 | "homepage": "http://www.php-fig.org/" 1156 | } 1157 | ], 1158 | "description": "Common interface for logging libraries", 1159 | "homepage": "https://github.com/php-fig/log", 1160 | "keywords": [ 1161 | "log", 1162 | "psr", 1163 | "psr-3" 1164 | ], 1165 | "time": "2016-10-10T12:19:37+00:00" 1166 | }, 1167 | { 1168 | "name": "psr/simple-cache", 1169 | "version": "1.0.1", 1170 | "source": { 1171 | "type": "git", 1172 | "url": "https://github.com/php-fig/simple-cache.git", 1173 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 1174 | }, 1175 | "dist": { 1176 | "type": "zip", 1177 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1178 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1179 | "shasum": "" 1180 | }, 1181 | "require": { 1182 | "php": ">=5.3.0" 1183 | }, 1184 | "type": "library", 1185 | "extra": { 1186 | "branch-alias": { 1187 | "dev-master": "1.0.x-dev" 1188 | } 1189 | }, 1190 | "autoload": { 1191 | "psr-4": { 1192 | "Psr\\SimpleCache\\": "src/" 1193 | } 1194 | }, 1195 | "notification-url": "https://packagist.org/downloads/", 1196 | "license": [ 1197 | "MIT" 1198 | ], 1199 | "authors": [ 1200 | { 1201 | "name": "PHP-FIG", 1202 | "homepage": "http://www.php-fig.org/" 1203 | } 1204 | ], 1205 | "description": "Common interfaces for simple caching", 1206 | "keywords": [ 1207 | "cache", 1208 | "caching", 1209 | "psr", 1210 | "psr-16", 1211 | "simple-cache" 1212 | ], 1213 | "time": "2017-10-23T01:57:42+00:00" 1214 | }, 1215 | { 1216 | "name": "symfony/cache", 1217 | "version": "v4.1.6", 1218 | "source": { 1219 | "type": "git", 1220 | "url": "https://github.com/symfony/cache.git", 1221 | "reference": "05ce0ddc8bc1ffe592105398fc2c725cb3080a38" 1222 | }, 1223 | "dist": { 1224 | "type": "zip", 1225 | "url": "https://api.github.com/repos/symfony/cache/zipball/05ce0ddc8bc1ffe592105398fc2c725cb3080a38", 1226 | "reference": "05ce0ddc8bc1ffe592105398fc2c725cb3080a38", 1227 | "shasum": "" 1228 | }, 1229 | "require": { 1230 | "php": "^7.1.3", 1231 | "psr/cache": "~1.0", 1232 | "psr/log": "~1.0", 1233 | "psr/simple-cache": "^1.0" 1234 | }, 1235 | "conflict": { 1236 | "symfony/var-dumper": "<3.4" 1237 | }, 1238 | "provide": { 1239 | "psr/cache-implementation": "1.0", 1240 | "psr/simple-cache-implementation": "1.0" 1241 | }, 1242 | "require-dev": { 1243 | "cache/integration-tests": "dev-master", 1244 | "doctrine/cache": "~1.6", 1245 | "doctrine/dbal": "~2.4", 1246 | "predis/predis": "~1.0" 1247 | }, 1248 | "type": "library", 1249 | "extra": { 1250 | "branch-alias": { 1251 | "dev-master": "4.1-dev" 1252 | } 1253 | }, 1254 | "autoload": { 1255 | "psr-4": { 1256 | "Symfony\\Component\\Cache\\": "" 1257 | }, 1258 | "exclude-from-classmap": [ 1259 | "/Tests/" 1260 | ] 1261 | }, 1262 | "notification-url": "https://packagist.org/downloads/", 1263 | "license": [ 1264 | "MIT" 1265 | ], 1266 | "authors": [ 1267 | { 1268 | "name": "Nicolas Grekas", 1269 | "email": "p@tchwork.com" 1270 | }, 1271 | { 1272 | "name": "Symfony Community", 1273 | "homepage": "https://symfony.com/contributors" 1274 | } 1275 | ], 1276 | "description": "Symfony Cache component with PSR-6, PSR-16, and tags", 1277 | "homepage": "https://symfony.com", 1278 | "keywords": [ 1279 | "caching", 1280 | "psr6" 1281 | ], 1282 | "time": "2018-09-30T03:38:13+00:00" 1283 | }, 1284 | { 1285 | "name": "symfony/config", 1286 | "version": "v4.1.6", 1287 | "source": { 1288 | "type": "git", 1289 | "url": "https://github.com/symfony/config.git", 1290 | "reference": "b3d4d7b567d7a49e6dfafb6d4760abc921177c96" 1291 | }, 1292 | "dist": { 1293 | "type": "zip", 1294 | "url": "https://api.github.com/repos/symfony/config/zipball/b3d4d7b567d7a49e6dfafb6d4760abc921177c96", 1295 | "reference": "b3d4d7b567d7a49e6dfafb6d4760abc921177c96", 1296 | "shasum": "" 1297 | }, 1298 | "require": { 1299 | "php": "^7.1.3", 1300 | "symfony/filesystem": "~3.4|~4.0", 1301 | "symfony/polyfill-ctype": "~1.8" 1302 | }, 1303 | "conflict": { 1304 | "symfony/finder": "<3.4" 1305 | }, 1306 | "require-dev": { 1307 | "symfony/dependency-injection": "~3.4|~4.0", 1308 | "symfony/event-dispatcher": "~3.4|~4.0", 1309 | "symfony/finder": "~3.4|~4.0", 1310 | "symfony/yaml": "~3.4|~4.0" 1311 | }, 1312 | "suggest": { 1313 | "symfony/yaml": "To use the yaml reference dumper" 1314 | }, 1315 | "type": "library", 1316 | "extra": { 1317 | "branch-alias": { 1318 | "dev-master": "4.1-dev" 1319 | } 1320 | }, 1321 | "autoload": { 1322 | "psr-4": { 1323 | "Symfony\\Component\\Config\\": "" 1324 | }, 1325 | "exclude-from-classmap": [ 1326 | "/Tests/" 1327 | ] 1328 | }, 1329 | "notification-url": "https://packagist.org/downloads/", 1330 | "license": [ 1331 | "MIT" 1332 | ], 1333 | "authors": [ 1334 | { 1335 | "name": "Fabien Potencier", 1336 | "email": "fabien@symfony.com" 1337 | }, 1338 | { 1339 | "name": "Symfony Community", 1340 | "homepage": "https://symfony.com/contributors" 1341 | } 1342 | ], 1343 | "description": "Symfony Config Component", 1344 | "homepage": "https://symfony.com", 1345 | "time": "2018-09-08T13:24:10+00:00" 1346 | }, 1347 | { 1348 | "name": "symfony/console", 1349 | "version": "v4.1.6", 1350 | "source": { 1351 | "type": "git", 1352 | "url": "https://github.com/symfony/console.git", 1353 | "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b" 1354 | }, 1355 | "dist": { 1356 | "type": "zip", 1357 | "url": "https://api.github.com/repos/symfony/console/zipball/dc7122fe5f6113cfaba3b3de575d31112c9aa60b", 1358 | "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b", 1359 | "shasum": "" 1360 | }, 1361 | "require": { 1362 | "php": "^7.1.3", 1363 | "symfony/polyfill-mbstring": "~1.0" 1364 | }, 1365 | "conflict": { 1366 | "symfony/dependency-injection": "<3.4", 1367 | "symfony/process": "<3.3" 1368 | }, 1369 | "require-dev": { 1370 | "psr/log": "~1.0", 1371 | "symfony/config": "~3.4|~4.0", 1372 | "symfony/dependency-injection": "~3.4|~4.0", 1373 | "symfony/event-dispatcher": "~3.4|~4.0", 1374 | "symfony/lock": "~3.4|~4.0", 1375 | "symfony/process": "~3.4|~4.0" 1376 | }, 1377 | "suggest": { 1378 | "psr/log-implementation": "For using the console logger", 1379 | "symfony/event-dispatcher": "", 1380 | "symfony/lock": "", 1381 | "symfony/process": "" 1382 | }, 1383 | "type": "library", 1384 | "extra": { 1385 | "branch-alias": { 1386 | "dev-master": "4.1-dev" 1387 | } 1388 | }, 1389 | "autoload": { 1390 | "psr-4": { 1391 | "Symfony\\Component\\Console\\": "" 1392 | }, 1393 | "exclude-from-classmap": [ 1394 | "/Tests/" 1395 | ] 1396 | }, 1397 | "notification-url": "https://packagist.org/downloads/", 1398 | "license": [ 1399 | "MIT" 1400 | ], 1401 | "authors": [ 1402 | { 1403 | "name": "Fabien Potencier", 1404 | "email": "fabien@symfony.com" 1405 | }, 1406 | { 1407 | "name": "Symfony Community", 1408 | "homepage": "https://symfony.com/contributors" 1409 | } 1410 | ], 1411 | "description": "Symfony Console Component", 1412 | "homepage": "https://symfony.com", 1413 | "time": "2018-10-03T08:15:46+00:00" 1414 | }, 1415 | { 1416 | "name": "symfony/debug", 1417 | "version": "v4.1.6", 1418 | "source": { 1419 | "type": "git", 1420 | "url": "https://github.com/symfony/debug.git", 1421 | "reference": "e3f76ce6198f81994e019bb2b4e533e9de1b9b90" 1422 | }, 1423 | "dist": { 1424 | "type": "zip", 1425 | "url": "https://api.github.com/repos/symfony/debug/zipball/e3f76ce6198f81994e019bb2b4e533e9de1b9b90", 1426 | "reference": "e3f76ce6198f81994e019bb2b4e533e9de1b9b90", 1427 | "shasum": "" 1428 | }, 1429 | "require": { 1430 | "php": "^7.1.3", 1431 | "psr/log": "~1.0" 1432 | }, 1433 | "conflict": { 1434 | "symfony/http-kernel": "<3.4" 1435 | }, 1436 | "require-dev": { 1437 | "symfony/http-kernel": "~3.4|~4.0" 1438 | }, 1439 | "type": "library", 1440 | "extra": { 1441 | "branch-alias": { 1442 | "dev-master": "4.1-dev" 1443 | } 1444 | }, 1445 | "autoload": { 1446 | "psr-4": { 1447 | "Symfony\\Component\\Debug\\": "" 1448 | }, 1449 | "exclude-from-classmap": [ 1450 | "/Tests/" 1451 | ] 1452 | }, 1453 | "notification-url": "https://packagist.org/downloads/", 1454 | "license": [ 1455 | "MIT" 1456 | ], 1457 | "authors": [ 1458 | { 1459 | "name": "Fabien Potencier", 1460 | "email": "fabien@symfony.com" 1461 | }, 1462 | { 1463 | "name": "Symfony Community", 1464 | "homepage": "https://symfony.com/contributors" 1465 | } 1466 | ], 1467 | "description": "Symfony Debug Component", 1468 | "homepage": "https://symfony.com", 1469 | "time": "2018-10-02T16:36:10+00:00" 1470 | }, 1471 | { 1472 | "name": "symfony/dependency-injection", 1473 | "version": "v4.1.6", 1474 | "source": { 1475 | "type": "git", 1476 | "url": "https://github.com/symfony/dependency-injection.git", 1477 | "reference": "f6b9d893ad28aefd8942dc0469c8397e2216fe30" 1478 | }, 1479 | "dist": { 1480 | "type": "zip", 1481 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f6b9d893ad28aefd8942dc0469c8397e2216fe30", 1482 | "reference": "f6b9d893ad28aefd8942dc0469c8397e2216fe30", 1483 | "shasum": "" 1484 | }, 1485 | "require": { 1486 | "php": "^7.1.3", 1487 | "psr/container": "^1.0" 1488 | }, 1489 | "conflict": { 1490 | "symfony/config": "<4.1.1", 1491 | "symfony/finder": "<3.4", 1492 | "symfony/proxy-manager-bridge": "<3.4", 1493 | "symfony/yaml": "<3.4" 1494 | }, 1495 | "provide": { 1496 | "psr/container-implementation": "1.0" 1497 | }, 1498 | "require-dev": { 1499 | "symfony/config": "~4.1", 1500 | "symfony/expression-language": "~3.4|~4.0", 1501 | "symfony/yaml": "~3.4|~4.0" 1502 | }, 1503 | "suggest": { 1504 | "symfony/config": "", 1505 | "symfony/expression-language": "For using expressions in service container configuration", 1506 | "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", 1507 | "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", 1508 | "symfony/yaml": "" 1509 | }, 1510 | "type": "library", 1511 | "extra": { 1512 | "branch-alias": { 1513 | "dev-master": "4.1-dev" 1514 | } 1515 | }, 1516 | "autoload": { 1517 | "psr-4": { 1518 | "Symfony\\Component\\DependencyInjection\\": "" 1519 | }, 1520 | "exclude-from-classmap": [ 1521 | "/Tests/" 1522 | ] 1523 | }, 1524 | "notification-url": "https://packagist.org/downloads/", 1525 | "license": [ 1526 | "MIT" 1527 | ], 1528 | "authors": [ 1529 | { 1530 | "name": "Fabien Potencier", 1531 | "email": "fabien@symfony.com" 1532 | }, 1533 | { 1534 | "name": "Symfony Community", 1535 | "homepage": "https://symfony.com/contributors" 1536 | } 1537 | ], 1538 | "description": "Symfony DependencyInjection Component", 1539 | "homepage": "https://symfony.com", 1540 | "time": "2018-10-02T12:40:59+00:00" 1541 | }, 1542 | { 1543 | "name": "symfony/event-dispatcher", 1544 | "version": "v4.1.6", 1545 | "source": { 1546 | "type": "git", 1547 | "url": "https://github.com/symfony/event-dispatcher.git", 1548 | "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e" 1549 | }, 1550 | "dist": { 1551 | "type": "zip", 1552 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bfb30c2ad377615a463ebbc875eba64a99f6aa3e", 1553 | "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e", 1554 | "shasum": "" 1555 | }, 1556 | "require": { 1557 | "php": "^7.1.3" 1558 | }, 1559 | "conflict": { 1560 | "symfony/dependency-injection": "<3.4" 1561 | }, 1562 | "require-dev": { 1563 | "psr/log": "~1.0", 1564 | "symfony/config": "~3.4|~4.0", 1565 | "symfony/dependency-injection": "~3.4|~4.0", 1566 | "symfony/expression-language": "~3.4|~4.0", 1567 | "symfony/stopwatch": "~3.4|~4.0" 1568 | }, 1569 | "suggest": { 1570 | "symfony/dependency-injection": "", 1571 | "symfony/http-kernel": "" 1572 | }, 1573 | "type": "library", 1574 | "extra": { 1575 | "branch-alias": { 1576 | "dev-master": "4.1-dev" 1577 | } 1578 | }, 1579 | "autoload": { 1580 | "psr-4": { 1581 | "Symfony\\Component\\EventDispatcher\\": "" 1582 | }, 1583 | "exclude-from-classmap": [ 1584 | "/Tests/" 1585 | ] 1586 | }, 1587 | "notification-url": "https://packagist.org/downloads/", 1588 | "license": [ 1589 | "MIT" 1590 | ], 1591 | "authors": [ 1592 | { 1593 | "name": "Fabien Potencier", 1594 | "email": "fabien@symfony.com" 1595 | }, 1596 | { 1597 | "name": "Symfony Community", 1598 | "homepage": "https://symfony.com/contributors" 1599 | } 1600 | ], 1601 | "description": "Symfony EventDispatcher Component", 1602 | "homepage": "https://symfony.com", 1603 | "time": "2018-07-26T09:10:45+00:00" 1604 | }, 1605 | { 1606 | "name": "symfony/filesystem", 1607 | "version": "v4.1.6", 1608 | "source": { 1609 | "type": "git", 1610 | "url": "https://github.com/symfony/filesystem.git", 1611 | "reference": "596d12b40624055c300c8b619755b748ca5cf0b5" 1612 | }, 1613 | "dist": { 1614 | "type": "zip", 1615 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/596d12b40624055c300c8b619755b748ca5cf0b5", 1616 | "reference": "596d12b40624055c300c8b619755b748ca5cf0b5", 1617 | "shasum": "" 1618 | }, 1619 | "require": { 1620 | "php": "^7.1.3", 1621 | "symfony/polyfill-ctype": "~1.8" 1622 | }, 1623 | "type": "library", 1624 | "extra": { 1625 | "branch-alias": { 1626 | "dev-master": "4.1-dev" 1627 | } 1628 | }, 1629 | "autoload": { 1630 | "psr-4": { 1631 | "Symfony\\Component\\Filesystem\\": "" 1632 | }, 1633 | "exclude-from-classmap": [ 1634 | "/Tests/" 1635 | ] 1636 | }, 1637 | "notification-url": "https://packagist.org/downloads/", 1638 | "license": [ 1639 | "MIT" 1640 | ], 1641 | "authors": [ 1642 | { 1643 | "name": "Fabien Potencier", 1644 | "email": "fabien@symfony.com" 1645 | }, 1646 | { 1647 | "name": "Symfony Community", 1648 | "homepage": "https://symfony.com/contributors" 1649 | } 1650 | ], 1651 | "description": "Symfony Filesystem Component", 1652 | "homepage": "https://symfony.com", 1653 | "time": "2018-10-02T12:40:59+00:00" 1654 | }, 1655 | { 1656 | "name": "symfony/finder", 1657 | "version": "v4.1.6", 1658 | "source": { 1659 | "type": "git", 1660 | "url": "https://github.com/symfony/finder.git", 1661 | "reference": "1f17195b44543017a9c9b2d437c670627e96ad06" 1662 | }, 1663 | "dist": { 1664 | "type": "zip", 1665 | "url": "https://api.github.com/repos/symfony/finder/zipball/1f17195b44543017a9c9b2d437c670627e96ad06", 1666 | "reference": "1f17195b44543017a9c9b2d437c670627e96ad06", 1667 | "shasum": "" 1668 | }, 1669 | "require": { 1670 | "php": "^7.1.3" 1671 | }, 1672 | "type": "library", 1673 | "extra": { 1674 | "branch-alias": { 1675 | "dev-master": "4.1-dev" 1676 | } 1677 | }, 1678 | "autoload": { 1679 | "psr-4": { 1680 | "Symfony\\Component\\Finder\\": "" 1681 | }, 1682 | "exclude-from-classmap": [ 1683 | "/Tests/" 1684 | ] 1685 | }, 1686 | "notification-url": "https://packagist.org/downloads/", 1687 | "license": [ 1688 | "MIT" 1689 | ], 1690 | "authors": [ 1691 | { 1692 | "name": "Fabien Potencier", 1693 | "email": "fabien@symfony.com" 1694 | }, 1695 | { 1696 | "name": "Symfony Community", 1697 | "homepage": "https://symfony.com/contributors" 1698 | } 1699 | ], 1700 | "description": "Symfony Finder Component", 1701 | "homepage": "https://symfony.com", 1702 | "time": "2018-10-03T08:47:56+00:00" 1703 | }, 1704 | { 1705 | "name": "symfony/flex", 1706 | "version": "v1.1.1", 1707 | "source": { 1708 | "type": "git", 1709 | "url": "https://github.com/symfony/flex.git", 1710 | "reference": "9fb60f232af0764d58002e7872acb43a74506d25" 1711 | }, 1712 | "dist": { 1713 | "type": "zip", 1714 | "url": "https://api.github.com/repos/symfony/flex/zipball/9fb60f232af0764d58002e7872acb43a74506d25", 1715 | "reference": "9fb60f232af0764d58002e7872acb43a74506d25", 1716 | "shasum": "" 1717 | }, 1718 | "require": { 1719 | "composer-plugin-api": "^1.0", 1720 | "php": "^7.0" 1721 | }, 1722 | "require-dev": { 1723 | "composer/composer": "^1.0.2", 1724 | "symfony/phpunit-bridge": "^3.2.8" 1725 | }, 1726 | "type": "composer-plugin", 1727 | "extra": { 1728 | "branch-alias": { 1729 | "dev-master": "1.1-dev" 1730 | }, 1731 | "class": "Symfony\\Flex\\Flex" 1732 | }, 1733 | "autoload": { 1734 | "psr-4": { 1735 | "Symfony\\Flex\\": "src" 1736 | } 1737 | }, 1738 | "notification-url": "https://packagist.org/downloads/", 1739 | "license": [ 1740 | "MIT" 1741 | ], 1742 | "authors": [ 1743 | { 1744 | "name": "Fabien Potencier", 1745 | "email": "fabien.potencier@gmail.com" 1746 | } 1747 | ], 1748 | "description": "Composer plugin for Symfony", 1749 | "time": "2018-09-03T08:17:12+00:00" 1750 | }, 1751 | { 1752 | "name": "symfony/framework-bundle", 1753 | "version": "v4.1.6", 1754 | "source": { 1755 | "type": "git", 1756 | "url": "https://github.com/symfony/framework-bundle.git", 1757 | "reference": "3a0f2ec035c6ecc0f751fda1a76b02310bc9bbfe" 1758 | }, 1759 | "dist": { 1760 | "type": "zip", 1761 | "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3a0f2ec035c6ecc0f751fda1a76b02310bc9bbfe", 1762 | "reference": "3a0f2ec035c6ecc0f751fda1a76b02310bc9bbfe", 1763 | "shasum": "" 1764 | }, 1765 | "require": { 1766 | "ext-xml": "*", 1767 | "php": "^7.1.3", 1768 | "symfony/cache": "~3.4|~4.0", 1769 | "symfony/config": "~3.4|~4.0", 1770 | "symfony/dependency-injection": "^4.1.1", 1771 | "symfony/event-dispatcher": "^4.1", 1772 | "symfony/filesystem": "~3.4|~4.0", 1773 | "symfony/finder": "~3.4|~4.0", 1774 | "symfony/http-foundation": "^4.1", 1775 | "symfony/http-kernel": "^4.1", 1776 | "symfony/polyfill-mbstring": "~1.0", 1777 | "symfony/routing": "^4.1" 1778 | }, 1779 | "conflict": { 1780 | "phpdocumentor/reflection-docblock": "<3.0", 1781 | "phpdocumentor/type-resolver": "<0.2.1", 1782 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", 1783 | "symfony/asset": "<3.4", 1784 | "symfony/console": "<3.4", 1785 | "symfony/form": "<4.1", 1786 | "symfony/messenger": ">=4.2", 1787 | "symfony/property-info": "<3.4", 1788 | "symfony/serializer": "<4.1", 1789 | "symfony/stopwatch": "<3.4", 1790 | "symfony/translation": "<3.4", 1791 | "symfony/twig-bridge": "<4.1.1", 1792 | "symfony/validator": "<4.1", 1793 | "symfony/workflow": "<4.1" 1794 | }, 1795 | "require-dev": { 1796 | "doctrine/annotations": "~1.0", 1797 | "doctrine/cache": "~1.0", 1798 | "fig/link-util": "^1.0", 1799 | "phpdocumentor/reflection-docblock": "^3.0|^4.0", 1800 | "symfony/asset": "~3.4|~4.0", 1801 | "symfony/browser-kit": "~3.4|~4.0", 1802 | "symfony/console": "~3.4|~4.0", 1803 | "symfony/css-selector": "~3.4|~4.0", 1804 | "symfony/dom-crawler": "~3.4|~4.0", 1805 | "symfony/expression-language": "~3.4|~4.0", 1806 | "symfony/form": "^4.1", 1807 | "symfony/lock": "~3.4|~4.0", 1808 | "symfony/messenger": "^4.1", 1809 | "symfony/polyfill-intl-icu": "~1.0", 1810 | "symfony/process": "~3.4|~4.0", 1811 | "symfony/property-info": "~3.4|~4.0", 1812 | "symfony/security": "~3.4|~4.0", 1813 | "symfony/security-core": "~3.4|~4.0", 1814 | "symfony/security-csrf": "~3.4|~4.0", 1815 | "symfony/serializer": "^4.1", 1816 | "symfony/stopwatch": "~3.4|~4.0", 1817 | "symfony/templating": "~3.4|~4.0", 1818 | "symfony/translation": "~3.4|~4.0", 1819 | "symfony/validator": "^4.1", 1820 | "symfony/var-dumper": "~3.4|~4.0", 1821 | "symfony/web-link": "~3.4|~4.0", 1822 | "symfony/workflow": "^4.1", 1823 | "symfony/yaml": "~3.4|~4.0", 1824 | "twig/twig": "~1.34|~2.4" 1825 | }, 1826 | "suggest": { 1827 | "ext-apcu": "For best performance of the system caches", 1828 | "symfony/console": "For using the console commands", 1829 | "symfony/form": "For using forms", 1830 | "symfony/property-info": "For using the property_info service", 1831 | "symfony/serializer": "For using the serializer service", 1832 | "symfony/validator": "For using validation", 1833 | "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", 1834 | "symfony/yaml": "For using the debug:config and lint:yaml commands" 1835 | }, 1836 | "type": "symfony-bundle", 1837 | "extra": { 1838 | "branch-alias": { 1839 | "dev-master": "4.1-dev" 1840 | } 1841 | }, 1842 | "autoload": { 1843 | "psr-4": { 1844 | "Symfony\\Bundle\\FrameworkBundle\\": "" 1845 | }, 1846 | "exclude-from-classmap": [ 1847 | "/Tests/" 1848 | ] 1849 | }, 1850 | "notification-url": "https://packagist.org/downloads/", 1851 | "license": [ 1852 | "MIT" 1853 | ], 1854 | "authors": [ 1855 | { 1856 | "name": "Fabien Potencier", 1857 | "email": "fabien@symfony.com" 1858 | }, 1859 | { 1860 | "name": "Symfony Community", 1861 | "homepage": "https://symfony.com/contributors" 1862 | } 1863 | ], 1864 | "description": "Symfony FrameworkBundle", 1865 | "homepage": "https://symfony.com", 1866 | "time": "2018-10-03T08:47:56+00:00" 1867 | }, 1868 | { 1869 | "name": "symfony/http-foundation", 1870 | "version": "v4.1.6", 1871 | "source": { 1872 | "type": "git", 1873 | "url": "https://github.com/symfony/http-foundation.git", 1874 | "reference": "d528136617ff24f530e70df9605acc1b788b08d4" 1875 | }, 1876 | "dist": { 1877 | "type": "zip", 1878 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d528136617ff24f530e70df9605acc1b788b08d4", 1879 | "reference": "d528136617ff24f530e70df9605acc1b788b08d4", 1880 | "shasum": "" 1881 | }, 1882 | "require": { 1883 | "php": "^7.1.3", 1884 | "symfony/polyfill-mbstring": "~1.1" 1885 | }, 1886 | "require-dev": { 1887 | "predis/predis": "~1.0", 1888 | "symfony/expression-language": "~3.4|~4.0" 1889 | }, 1890 | "type": "library", 1891 | "extra": { 1892 | "branch-alias": { 1893 | "dev-master": "4.1-dev" 1894 | } 1895 | }, 1896 | "autoload": { 1897 | "psr-4": { 1898 | "Symfony\\Component\\HttpFoundation\\": "" 1899 | }, 1900 | "exclude-from-classmap": [ 1901 | "/Tests/" 1902 | ] 1903 | }, 1904 | "notification-url": "https://packagist.org/downloads/", 1905 | "license": [ 1906 | "MIT" 1907 | ], 1908 | "authors": [ 1909 | { 1910 | "name": "Fabien Potencier", 1911 | "email": "fabien@symfony.com" 1912 | }, 1913 | { 1914 | "name": "Symfony Community", 1915 | "homepage": "https://symfony.com/contributors" 1916 | } 1917 | ], 1918 | "description": "Symfony HttpFoundation Component", 1919 | "homepage": "https://symfony.com", 1920 | "time": "2018-10-03T08:48:45+00:00" 1921 | }, 1922 | { 1923 | "name": "symfony/http-kernel", 1924 | "version": "v4.1.6", 1925 | "source": { 1926 | "type": "git", 1927 | "url": "https://github.com/symfony/http-kernel.git", 1928 | "reference": "f5e7c15a5d010be0e16ce798594c5960451d4220" 1929 | }, 1930 | "dist": { 1931 | "type": "zip", 1932 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f5e7c15a5d010be0e16ce798594c5960451d4220", 1933 | "reference": "f5e7c15a5d010be0e16ce798594c5960451d4220", 1934 | "shasum": "" 1935 | }, 1936 | "require": { 1937 | "php": "^7.1.3", 1938 | "psr/log": "~1.0", 1939 | "symfony/debug": "~3.4|~4.0", 1940 | "symfony/event-dispatcher": "~4.1", 1941 | "symfony/http-foundation": "^4.1.1", 1942 | "symfony/polyfill-ctype": "~1.8" 1943 | }, 1944 | "conflict": { 1945 | "symfony/config": "<3.4", 1946 | "symfony/dependency-injection": "<4.1", 1947 | "symfony/var-dumper": "<4.1.1", 1948 | "twig/twig": "<1.34|<2.4,>=2" 1949 | }, 1950 | "provide": { 1951 | "psr/log-implementation": "1.0" 1952 | }, 1953 | "require-dev": { 1954 | "psr/cache": "~1.0", 1955 | "symfony/browser-kit": "~3.4|~4.0", 1956 | "symfony/config": "~3.4|~4.0", 1957 | "symfony/console": "~3.4|~4.0", 1958 | "symfony/css-selector": "~3.4|~4.0", 1959 | "symfony/dependency-injection": "^4.1", 1960 | "symfony/dom-crawler": "~3.4|~4.0", 1961 | "symfony/expression-language": "~3.4|~4.0", 1962 | "symfony/finder": "~3.4|~4.0", 1963 | "symfony/process": "~3.4|~4.0", 1964 | "symfony/routing": "~3.4|~4.0", 1965 | "symfony/stopwatch": "~3.4|~4.0", 1966 | "symfony/templating": "~3.4|~4.0", 1967 | "symfony/translation": "~3.4|~4.0", 1968 | "symfony/var-dumper": "^4.1.1" 1969 | }, 1970 | "suggest": { 1971 | "symfony/browser-kit": "", 1972 | "symfony/config": "", 1973 | "symfony/console": "", 1974 | "symfony/dependency-injection": "", 1975 | "symfony/var-dumper": "" 1976 | }, 1977 | "type": "library", 1978 | "extra": { 1979 | "branch-alias": { 1980 | "dev-master": "4.1-dev" 1981 | } 1982 | }, 1983 | "autoload": { 1984 | "psr-4": { 1985 | "Symfony\\Component\\HttpKernel\\": "" 1986 | }, 1987 | "exclude-from-classmap": [ 1988 | "/Tests/" 1989 | ] 1990 | }, 1991 | "notification-url": "https://packagist.org/downloads/", 1992 | "license": [ 1993 | "MIT" 1994 | ], 1995 | "authors": [ 1996 | { 1997 | "name": "Fabien Potencier", 1998 | "email": "fabien@symfony.com" 1999 | }, 2000 | { 2001 | "name": "Symfony Community", 2002 | "homepage": "https://symfony.com/contributors" 2003 | } 2004 | ], 2005 | "description": "Symfony HttpKernel Component", 2006 | "homepage": "https://symfony.com", 2007 | "time": "2018-10-03T12:53:38+00:00" 2008 | }, 2009 | { 2010 | "name": "symfony/polyfill-mbstring", 2011 | "version": "v1.9.0", 2012 | "source": { 2013 | "type": "git", 2014 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2015 | "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" 2016 | }, 2017 | "dist": { 2018 | "type": "zip", 2019 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", 2020 | "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", 2021 | "shasum": "" 2022 | }, 2023 | "require": { 2024 | "php": ">=5.3.3" 2025 | }, 2026 | "suggest": { 2027 | "ext-mbstring": "For best performance" 2028 | }, 2029 | "type": "library", 2030 | "extra": { 2031 | "branch-alias": { 2032 | "dev-master": "1.9-dev" 2033 | } 2034 | }, 2035 | "autoload": { 2036 | "psr-4": { 2037 | "Symfony\\Polyfill\\Mbstring\\": "" 2038 | }, 2039 | "files": [ 2040 | "bootstrap.php" 2041 | ] 2042 | }, 2043 | "notification-url": "https://packagist.org/downloads/", 2044 | "license": [ 2045 | "MIT" 2046 | ], 2047 | "authors": [ 2048 | { 2049 | "name": "Nicolas Grekas", 2050 | "email": "p@tchwork.com" 2051 | }, 2052 | { 2053 | "name": "Symfony Community", 2054 | "homepage": "https://symfony.com/contributors" 2055 | } 2056 | ], 2057 | "description": "Symfony polyfill for the Mbstring extension", 2058 | "homepage": "https://symfony.com", 2059 | "keywords": [ 2060 | "compatibility", 2061 | "mbstring", 2062 | "polyfill", 2063 | "portable", 2064 | "shim" 2065 | ], 2066 | "time": "2018-08-06T14:22:27+00:00" 2067 | }, 2068 | { 2069 | "name": "symfony/routing", 2070 | "version": "v4.1.6", 2071 | "source": { 2072 | "type": "git", 2073 | "url": "https://github.com/symfony/routing.git", 2074 | "reference": "537803f0bdfede36b9acef052d2e4d447d9fa0e9" 2075 | }, 2076 | "dist": { 2077 | "type": "zip", 2078 | "url": "https://api.github.com/repos/symfony/routing/zipball/537803f0bdfede36b9acef052d2e4d447d9fa0e9", 2079 | "reference": "537803f0bdfede36b9acef052d2e4d447d9fa0e9", 2080 | "shasum": "" 2081 | }, 2082 | "require": { 2083 | "php": "^7.1.3" 2084 | }, 2085 | "conflict": { 2086 | "symfony/config": "<3.4", 2087 | "symfony/dependency-injection": "<3.4", 2088 | "symfony/yaml": "<3.4" 2089 | }, 2090 | "require-dev": { 2091 | "doctrine/annotations": "~1.0", 2092 | "psr/log": "~1.0", 2093 | "symfony/config": "~3.4|~4.0", 2094 | "symfony/dependency-injection": "~3.4|~4.0", 2095 | "symfony/expression-language": "~3.4|~4.0", 2096 | "symfony/http-foundation": "~3.4|~4.0", 2097 | "symfony/yaml": "~3.4|~4.0" 2098 | }, 2099 | "suggest": { 2100 | "doctrine/annotations": "For using the annotation loader", 2101 | "symfony/config": "For using the all-in-one router or any loader", 2102 | "symfony/dependency-injection": "For loading routes from a service", 2103 | "symfony/expression-language": "For using expression matching", 2104 | "symfony/http-foundation": "For using a Symfony Request object", 2105 | "symfony/yaml": "For using the YAML loader" 2106 | }, 2107 | "type": "library", 2108 | "extra": { 2109 | "branch-alias": { 2110 | "dev-master": "4.1-dev" 2111 | } 2112 | }, 2113 | "autoload": { 2114 | "psr-4": { 2115 | "Symfony\\Component\\Routing\\": "" 2116 | }, 2117 | "exclude-from-classmap": [ 2118 | "/Tests/" 2119 | ] 2120 | }, 2121 | "notification-url": "https://packagist.org/downloads/", 2122 | "license": [ 2123 | "MIT" 2124 | ], 2125 | "authors": [ 2126 | { 2127 | "name": "Fabien Potencier", 2128 | "email": "fabien@symfony.com" 2129 | }, 2130 | { 2131 | "name": "Symfony Community", 2132 | "homepage": "https://symfony.com/contributors" 2133 | } 2134 | ], 2135 | "description": "Symfony Routing Component", 2136 | "homepage": "https://symfony.com", 2137 | "keywords": [ 2138 | "router", 2139 | "routing", 2140 | "uri", 2141 | "url" 2142 | ], 2143 | "time": "2018-10-02T12:40:59+00:00" 2144 | }, 2145 | { 2146 | "name": "symfony/yaml", 2147 | "version": "v4.1.6", 2148 | "source": { 2149 | "type": "git", 2150 | "url": "https://github.com/symfony/yaml.git", 2151 | "reference": "367e689b2fdc19965be435337b50bc8adf2746c9" 2152 | }, 2153 | "dist": { 2154 | "type": "zip", 2155 | "url": "https://api.github.com/repos/symfony/yaml/zipball/367e689b2fdc19965be435337b50bc8adf2746c9", 2156 | "reference": "367e689b2fdc19965be435337b50bc8adf2746c9", 2157 | "shasum": "" 2158 | }, 2159 | "require": { 2160 | "php": "^7.1.3", 2161 | "symfony/polyfill-ctype": "~1.8" 2162 | }, 2163 | "conflict": { 2164 | "symfony/console": "<3.4" 2165 | }, 2166 | "require-dev": { 2167 | "symfony/console": "~3.4|~4.0" 2168 | }, 2169 | "suggest": { 2170 | "symfony/console": "For validating YAML files using the lint command" 2171 | }, 2172 | "type": "library", 2173 | "extra": { 2174 | "branch-alias": { 2175 | "dev-master": "4.1-dev" 2176 | } 2177 | }, 2178 | "autoload": { 2179 | "psr-4": { 2180 | "Symfony\\Component\\Yaml\\": "" 2181 | }, 2182 | "exclude-from-classmap": [ 2183 | "/Tests/" 2184 | ] 2185 | }, 2186 | "notification-url": "https://packagist.org/downloads/", 2187 | "license": [ 2188 | "MIT" 2189 | ], 2190 | "authors": [ 2191 | { 2192 | "name": "Fabien Potencier", 2193 | "email": "fabien@symfony.com" 2194 | }, 2195 | { 2196 | "name": "Symfony Community", 2197 | "homepage": "https://symfony.com/contributors" 2198 | } 2199 | ], 2200 | "description": "Symfony Yaml Component", 2201 | "homepage": "https://symfony.com", 2202 | "time": "2018-10-02T16:36:10+00:00" 2203 | }, 2204 | { 2205 | "name": "twig/twig", 2206 | "version": "v2.5.0", 2207 | "source": { 2208 | "type": "git", 2209 | "url": "https://github.com/twigphp/Twig.git", 2210 | "reference": "6a5f676b77a90823c2d4eaf76137b771adf31323" 2211 | }, 2212 | "dist": { 2213 | "type": "zip", 2214 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/6a5f676b77a90823c2d4eaf76137b771adf31323", 2215 | "reference": "6a5f676b77a90823c2d4eaf76137b771adf31323", 2216 | "shasum": "" 2217 | }, 2218 | "require": { 2219 | "php": "^7.0", 2220 | "symfony/polyfill-ctype": "^1.8", 2221 | "symfony/polyfill-mbstring": "~1.0" 2222 | }, 2223 | "require-dev": { 2224 | "psr/container": "^1.0", 2225 | "symfony/debug": "^2.7", 2226 | "symfony/phpunit-bridge": "^3.3" 2227 | }, 2228 | "type": "library", 2229 | "extra": { 2230 | "branch-alias": { 2231 | "dev-master": "2.5-dev" 2232 | } 2233 | }, 2234 | "autoload": { 2235 | "psr-0": { 2236 | "Twig_": "lib/" 2237 | }, 2238 | "psr-4": { 2239 | "Twig\\": "src/" 2240 | } 2241 | }, 2242 | "notification-url": "https://packagist.org/downloads/", 2243 | "license": [ 2244 | "BSD-3-Clause" 2245 | ], 2246 | "authors": [ 2247 | { 2248 | "name": "Fabien Potencier", 2249 | "email": "fabien@symfony.com", 2250 | "homepage": "http://fabien.potencier.org", 2251 | "role": "Lead Developer" 2252 | }, 2253 | { 2254 | "name": "Armin Ronacher", 2255 | "email": "armin.ronacher@active-4.com", 2256 | "role": "Project Founder" 2257 | }, 2258 | { 2259 | "name": "Twig Team", 2260 | "homepage": "https://twig.symfony.com/contributors", 2261 | "role": "Contributors" 2262 | } 2263 | ], 2264 | "description": "Twig, the flexible, fast, and secure template language for PHP", 2265 | "homepage": "https://twig.symfony.com", 2266 | "keywords": [ 2267 | "templating" 2268 | ], 2269 | "time": "2018-07-13T07:18:09+00:00" 2270 | } 2271 | ], 2272 | "packages-dev": [ 2273 | { 2274 | "name": "nikic/php-parser", 2275 | "version": "v4.1.0", 2276 | "source": { 2277 | "type": "git", 2278 | "url": "https://github.com/nikic/PHP-Parser.git", 2279 | "reference": "d0230c5c77a7e3cfa69446febf340978540958c0" 2280 | }, 2281 | "dist": { 2282 | "type": "zip", 2283 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0", 2284 | "reference": "d0230c5c77a7e3cfa69446febf340978540958c0", 2285 | "shasum": "" 2286 | }, 2287 | "require": { 2288 | "ext-tokenizer": "*", 2289 | "php": ">=7.0" 2290 | }, 2291 | "require-dev": { 2292 | "phpunit/phpunit": "^6.5 || ^7.0" 2293 | }, 2294 | "bin": [ 2295 | "bin/php-parse" 2296 | ], 2297 | "type": "library", 2298 | "extra": { 2299 | "branch-alias": { 2300 | "dev-master": "4.1-dev" 2301 | } 2302 | }, 2303 | "autoload": { 2304 | "psr-4": { 2305 | "PhpParser\\": "lib/PhpParser" 2306 | } 2307 | }, 2308 | "notification-url": "https://packagist.org/downloads/", 2309 | "license": [ 2310 | "BSD-3-Clause" 2311 | ], 2312 | "authors": [ 2313 | { 2314 | "name": "Nikita Popov" 2315 | } 2316 | ], 2317 | "description": "A PHP parser written in PHP", 2318 | "keywords": [ 2319 | "parser", 2320 | "php" 2321 | ], 2322 | "time": "2018-10-10T09:24:14+00:00" 2323 | }, 2324 | { 2325 | "name": "symfony/dotenv", 2326 | "version": "v4.1.6", 2327 | "source": { 2328 | "type": "git", 2329 | "url": "https://github.com/symfony/dotenv.git", 2330 | "reference": "22ca63c46e252b8a8f37b8f9e6da66bff5b3d3e7" 2331 | }, 2332 | "dist": { 2333 | "type": "zip", 2334 | "url": "https://api.github.com/repos/symfony/dotenv/zipball/22ca63c46e252b8a8f37b8f9e6da66bff5b3d3e7", 2335 | "reference": "22ca63c46e252b8a8f37b8f9e6da66bff5b3d3e7", 2336 | "shasum": "" 2337 | }, 2338 | "require": { 2339 | "php": "^7.1.3" 2340 | }, 2341 | "require-dev": { 2342 | "symfony/process": "~3.4|~4.0" 2343 | }, 2344 | "type": "library", 2345 | "extra": { 2346 | "branch-alias": { 2347 | "dev-master": "4.1-dev" 2348 | } 2349 | }, 2350 | "autoload": { 2351 | "psr-4": { 2352 | "Symfony\\Component\\Dotenv\\": "" 2353 | }, 2354 | "exclude-from-classmap": [ 2355 | "/Tests/" 2356 | ] 2357 | }, 2358 | "notification-url": "https://packagist.org/downloads/", 2359 | "license": [ 2360 | "MIT" 2361 | ], 2362 | "authors": [ 2363 | { 2364 | "name": "Fabien Potencier", 2365 | "email": "fabien@symfony.com" 2366 | }, 2367 | { 2368 | "name": "Symfony Community", 2369 | "homepage": "https://symfony.com/contributors" 2370 | } 2371 | ], 2372 | "description": "Registers environment variables from a .env file", 2373 | "homepage": "https://symfony.com", 2374 | "keywords": [ 2375 | "dotenv", 2376 | "env", 2377 | "environment" 2378 | ], 2379 | "time": "2018-07-26T11:24:31+00:00" 2380 | }, 2381 | { 2382 | "name": "symfony/maker-bundle", 2383 | "version": "v1.8.0", 2384 | "source": { 2385 | "type": "git", 2386 | "url": "https://github.com/symfony/maker-bundle.git", 2387 | "reference": "26643943fe19b5b47d620744907f09d1d6b3f06f" 2388 | }, 2389 | "dist": { 2390 | "type": "zip", 2391 | "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/26643943fe19b5b47d620744907f09d1d6b3f06f", 2392 | "reference": "26643943fe19b5b47d620744907f09d1d6b3f06f", 2393 | "shasum": "" 2394 | }, 2395 | "require": { 2396 | "doctrine/inflector": "^1.2", 2397 | "nikic/php-parser": "^4.0", 2398 | "php": "^7.0.8", 2399 | "symfony/config": "^3.4|^4.0", 2400 | "symfony/console": "^3.4|^4.0", 2401 | "symfony/dependency-injection": "^3.4|^4.0", 2402 | "symfony/filesystem": "^3.4|^4.0", 2403 | "symfony/finder": "^3.4|^4.0", 2404 | "symfony/framework-bundle": "^3.4|^4.0", 2405 | "symfony/http-kernel": "^3.4|^4.0" 2406 | }, 2407 | "require-dev": { 2408 | "allocine/twigcs": "^3.0", 2409 | "doctrine/doctrine-bundle": "^1.8", 2410 | "doctrine/orm": "^2.3", 2411 | "friendsofphp/php-cs-fixer": "^2.8", 2412 | "symfony/phpunit-bridge": "^3.4|^4.0", 2413 | "symfony/process": "^3.4|^4.0", 2414 | "symfony/yaml": "^3.4|^4.0" 2415 | }, 2416 | "type": "symfony-bundle", 2417 | "extra": { 2418 | "branch-alias": { 2419 | "dev-master": "1.0-dev" 2420 | } 2421 | }, 2422 | "autoload": { 2423 | "psr-4": { 2424 | "Symfony\\Bundle\\MakerBundle\\": "src/" 2425 | } 2426 | }, 2427 | "notification-url": "https://packagist.org/downloads/", 2428 | "license": [ 2429 | "MIT" 2430 | ], 2431 | "authors": [ 2432 | { 2433 | "name": "Symfony Community", 2434 | "homepage": "https://symfony.com/contributors" 2435 | } 2436 | ], 2437 | "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", 2438 | "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", 2439 | "keywords": [ 2440 | "code generator", 2441 | "generator", 2442 | "scaffold", 2443 | "scaffolding" 2444 | ], 2445 | "time": "2018-10-13T19:56:32+00:00" 2446 | } 2447 | ], 2448 | "aliases": [], 2449 | "minimum-stability": "stable", 2450 | "stability-flags": [], 2451 | "prefer-stable": false, 2452 | "prefer-lowest": false, 2453 | "platform": { 2454 | "php": "^7.1.3", 2455 | "ext-ctype": "*", 2456 | "ext-iconv": "*" 2457 | }, 2458 | "platform-dev": [] 2459 | } 2460 | -------------------------------------------------------------------------------- /config/bundles.php: -------------------------------------------------------------------------------- 1 | ['all' => true], 5 | Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], 6 | Doctrine\Bundle\DoctrineSkeletonMapperBundle\DoctrineSkeletonMapperBundle::class => ['all' => true], 7 | Doctrine\Bundle\DoctrineStaticWebsiteGeneratorBundle\DoctrineStaticWebsiteGeneratorBundle::class => ['all' => true], 8 | ]; 9 | -------------------------------------------------------------------------------- /config/packages/dev/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: true 4 | -------------------------------------------------------------------------------- /config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | secret: '%env(APP_SECRET)%' 3 | #default_locale: en 4 | #csrf_protection: true 5 | #http_method_override: true 6 | 7 | # Enables session support. Note that the session will ONLY be started if you read or write from it. 8 | # Remove or comment this section to explicitly disable session support. 9 | session: 10 | handler_id: ~ 11 | 12 | #esi: true 13 | #fragments: true 14 | php_errors: 15 | log: true 16 | 17 | cache: 18 | # Put the unique name of your app here: the prefix seed 19 | # is used to compute stable namespaces for cache keys. 20 | #prefix_seed: your_vendor_name/app_name 21 | 22 | # The app cache caches to the filesystem by default. 23 | # Other options include: 24 | 25 | # Redis 26 | #app: cache.adapter.redis 27 | #default_redis_provider: redis://localhost 28 | 29 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) 30 | #app: cache.adapter.apcu 31 | -------------------------------------------------------------------------------- /config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: ~ 4 | -------------------------------------------------------------------------------- /config/packages/test/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | test: true 3 | session: 4 | storage_id: session.storage.mock_file 5 | -------------------------------------------------------------------------------- /config/packages/test/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: true 4 | -------------------------------------------------------------------------------- /config/routes.yaml: -------------------------------------------------------------------------------- 1 | #index: 2 | # path: / 3 | # controller: App\Controller\DefaultController::index 4 | -------------------------------------------------------------------------------- /config/routes/annotations.yaml: -------------------------------------------------------------------------------- 1 | controllers: 2 | resource: ../../src/Controller/ 3 | type: annotation 4 | -------------------------------------------------------------------------------- /config/services.yaml: -------------------------------------------------------------------------------- 1 | # This file is the entry point to configure your own services. 2 | # Files in the packages/ subdirectory configure your dependencies. 3 | 4 | # Put parameters here that don't need to change on each machine where the app is deployed 5 | # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration 6 | parameters: 7 | doctrine.static_website.title: Symfony & Doctrine Static Website 8 | doctrine.static_website.subtitle: The Symfony & Doctrine Static Website Generator for PHP 9 | doctrine.static_website.url: http://localhost 10 | doctrine.static_website.keywords: [php, website, builder, doctrine, mapper, object, controller, route] 11 | doctrine.static_website.description: The Symfony & Doctrine Static Website Generator for PHP 12 | doctrine.static_website.google_analytics_tracking_id: "" 13 | 14 | doctrine.static_website.routes: 15 | homepage: 16 | path: /index.html 17 | controller: App\Controller\UserController::index 18 | 19 | user: 20 | path: /user/{username}.html 21 | controller: App\Controller\UserController::user 22 | provider: App\Requests\UserRequests::getUsers 23 | 24 | services: 25 | # default configuration for services in *this* file 26 | _defaults: 27 | autowire: true # Automatically injects dependencies in your services. 28 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 29 | public: false # Allows optimizing the container by removing unused services; this also means 30 | # fetching services directly from the container via $container->get() won't work. 31 | # The best practice is to be explicit about your dependencies anyway. 32 | 33 | # makes classes in src/ available to be used as services 34 | # this creates a service per class whose id is the fully-qualified class name 35 | App\: 36 | resource: '../src/*' 37 | exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}' 38 | 39 | # controllers are imported separately to make sure services can be injected 40 | # as action arguments even if you don't extend any base controller class 41 | App\Controller\: 42 | resource: '../src/Controller' 43 | tags: ['controller.service_arguments'] 44 | 45 | # add more service definitions when explicit configuration is needed 46 | # please note that last definitions always *replace* previous ones 47 | 48 | App\Repositories\UserRepository: 49 | factory: 'Doctrine\Bundle\DoctrineSkeletonMapperBundle\ObjectRepositoryFactory:createRepository' 50 | arguments: 51 | - '@App\DataSources\Users' 52 | - 'App\Repositories\UserRepository' 53 | - 'App\Models\User' 54 | 55 | Doctrine\StaticWebsiteGenerator\Controller\ControllerProvider: 56 | arguments: 57 | - 58 | - '@App\Controller\UserController' 59 | 60 | Doctrine\StaticWebsiteGenerator\Request\RequestCollectionProvider: 61 | arguments: 62 | - 63 | - '@App\Requests\UserRequests' 64 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | load(__DIR__.'/../.env'); 16 | } 17 | 18 | $env = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? 'dev'; 19 | $debug = (bool) ($_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? ('prod' !== $env)); 20 | 21 | if ($debug) { 22 | umask(0000); 23 | 24 | Debug::enable(); 25 | } 26 | 27 | if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) { 28 | Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); 29 | } 30 | 31 | if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) { 32 | Request::setTrustedHosts(explode(',', $trustedHosts)); 33 | } 34 | 35 | $kernel = new Kernel($env, $debug); 36 | $request = Request::createFromGlobals(); 37 | $response = $kernel->handle($request); 38 | $response->send(); 39 | $kernel->terminate($request, $response); 40 | -------------------------------------------------------------------------------- /public/static: -------------------------------------------------------------------------------- 1 | ../build-dev/ -------------------------------------------------------------------------------- /source/index.md: -------------------------------------------------------------------------------- 1 | Test 2 | ==== 3 | 4 | We are in a Symfony Flex application! 5 | -------------------------------------------------------------------------------- /src/Controller/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doctrine/symfony-doctrine-static-website-generator/ffc614f8078c5f0519e6ef7afe72d8bf543b9336/src/Controller/.gitignore -------------------------------------------------------------------------------- /src/Controller/UserController.php: -------------------------------------------------------------------------------- 1 | userRepository = $userRepository; 17 | } 18 | 19 | public function index() : Response 20 | { 21 | $users = $this->userRepository->findAll(); 22 | 23 | return new Response([ 24 | 'users' => $users 25 | ]); 26 | } 27 | 28 | public function user(string $username) : Response 29 | { 30 | $user = $this->userRepository->findOneByUsername($username); 31 | 32 | return new Response([ 33 | 'user' => $user, 34 | ], '/user.html.twig'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/DataSources/Users.php: -------------------------------------------------------------------------------- 1 | 'jwage'], 18 | ['username' => 'ocramius'], 19 | ['username' => 'ccovey'], 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Kernel.php: -------------------------------------------------------------------------------- 1 | getProjectDir().'/var/cache/'.$this->environment; 21 | } 22 | 23 | public function getLogDir() 24 | { 25 | return $this->getProjectDir().'/var/log'; 26 | } 27 | 28 | public function registerBundles() 29 | { 30 | $contents = require $this->getProjectDir().'/config/bundles.php'; 31 | foreach ($contents as $class => $envs) { 32 | if (isset($envs['all']) || isset($envs[$this->environment])) { 33 | yield new $class(); 34 | } 35 | } 36 | } 37 | 38 | protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader) 39 | { 40 | $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); 41 | // Feel free to remove the "container.autowiring.strict_mode" parameter 42 | // if you are using symfony/dependency-injection 4.0+ as it's the default behavior 43 | $container->setParameter('container.autowiring.strict_mode', true); 44 | $container->setParameter('container.dumper.inline_class_loader', true); 45 | $confDir = $this->getProjectDir().'/config'; 46 | 47 | $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); 48 | $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob'); 49 | $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); 50 | $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); 51 | } 52 | 53 | protected function configureRoutes(RouteCollectionBuilder $routes) 54 | { 55 | $confDir = $this->getProjectDir().'/config'; 56 | 57 | $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); 58 | $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob'); 59 | $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/Models/User.php: -------------------------------------------------------------------------------- 1 | setIdentifier(['username']); 20 | } 21 | 22 | /** 23 | * @param mixed[] $user 24 | */ 25 | public function hydrate(array $user, ObjectManagerInterface $objectManager) : void 26 | { 27 | $this->username = (string) ($user['username'] ?? ''); 28 | } 29 | 30 | public function getUsername() : string 31 | { 32 | return $this->username; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Repositories/UserRepository.php: -------------------------------------------------------------------------------- 1 | findOneBy(['username' => $username]); 16 | 17 | return $user; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Requests/UserRequests.php: -------------------------------------------------------------------------------- 1 | userRepository = $userRepository; 20 | } 21 | 22 | public function getUsers() : RequestCollection 23 | { 24 | /** @var User[] $users */ 25 | $users = $this->userRepository->findAll(); 26 | 27 | $requests = []; 28 | 29 | foreach ($users as $user) { 30 | $requests[] = [ 31 | 'username' => $user->getUsername(), 32 | ]; 33 | } 34 | 35 | return new ArrayRequestCollection($requests); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /symfony.lock: -------------------------------------------------------------------------------- 1 | { 2 | "doctrine/annotations": { 3 | "version": "1.0", 4 | "recipe": { 5 | "repo": "github.com/symfony/recipes", 6 | "branch": "master", 7 | "version": "1.0", 8 | "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672" 9 | } 10 | }, 11 | "doctrine/cache": { 12 | "version": "v1.8.0" 13 | }, 14 | "doctrine/collections": { 15 | "version": "v1.5.0" 16 | }, 17 | "doctrine/common": { 18 | "version": "v2.9.0" 19 | }, 20 | "doctrine/doctrine-skeleton-mapper-bundle": { 21 | "version": "0.0.1" 22 | }, 23 | "doctrine/doctrine-static-website-generator-bundle": { 24 | "version": "0.0.1" 25 | }, 26 | "doctrine/event-manager": { 27 | "version": "v1.0.0" 28 | }, 29 | "doctrine/inflector": { 30 | "version": "v1.3.0" 31 | }, 32 | "doctrine/instantiator": { 33 | "version": "1.1.0" 34 | }, 35 | "doctrine/lexer": { 36 | "version": "v1.0.1" 37 | }, 38 | "doctrine/persistence": { 39 | "version": "v1.0.1" 40 | }, 41 | "doctrine/reflection": { 42 | "version": "v1.0.0" 43 | }, 44 | "doctrine/rst-parser": { 45 | "version": "0.0.1" 46 | }, 47 | "doctrine/skeleton-mapper": { 48 | "version": "0.0.1" 49 | }, 50 | "doctrine/static-website-generator": { 51 | "version": "0.0.1" 52 | }, 53 | "erusev/parsedown": { 54 | "version": "1.7.1" 55 | }, 56 | "nikic/php-parser": { 57 | "version": "v4.1.0" 58 | }, 59 | "psr/cache": { 60 | "version": "1.0.1" 61 | }, 62 | "psr/container": { 63 | "version": "1.0.0" 64 | }, 65 | "psr/log": { 66 | "version": "1.0.2" 67 | }, 68 | "psr/simple-cache": { 69 | "version": "1.0.1" 70 | }, 71 | "symfony/cache": { 72 | "version": "v4.1.6" 73 | }, 74 | "symfony/config": { 75 | "version": "v4.1.6" 76 | }, 77 | "symfony/console": { 78 | "version": "3.3", 79 | "recipe": { 80 | "repo": "github.com/symfony/recipes", 81 | "branch": "master", 82 | "version": "3.3", 83 | "ref": "e3868d2f4a5104f19f844fe551099a00c6562527" 84 | } 85 | }, 86 | "symfony/debug": { 87 | "version": "v4.1.6" 88 | }, 89 | "symfony/dependency-injection": { 90 | "version": "v4.1.6" 91 | }, 92 | "symfony/dotenv": { 93 | "version": "v4.1.6" 94 | }, 95 | "symfony/event-dispatcher": { 96 | "version": "v4.1.6" 97 | }, 98 | "symfony/filesystem": { 99 | "version": "v4.1.6" 100 | }, 101 | "symfony/finder": { 102 | "version": "v4.1.6" 103 | }, 104 | "symfony/flex": { 105 | "version": "1.0", 106 | "recipe": { 107 | "repo": "github.com/symfony/recipes", 108 | "branch": "master", 109 | "version": "1.0", 110 | "ref": "e921bdbfe20cdefa3b82f379d1cd36df1bc8d115" 111 | } 112 | }, 113 | "symfony/framework-bundle": { 114 | "version": "3.3", 115 | "recipe": { 116 | "repo": "github.com/symfony/recipes", 117 | "branch": "master", 118 | "version": "3.3", 119 | "ref": "1717e67afa995e4f01a25ba9ae7aca5b2327bcaa" 120 | } 121 | }, 122 | "symfony/http-foundation": { 123 | "version": "v4.1.6" 124 | }, 125 | "symfony/http-kernel": { 126 | "version": "v4.1.6" 127 | }, 128 | "symfony/maker-bundle": { 129 | "version": "1.0", 130 | "recipe": { 131 | "repo": "github.com/symfony/recipes", 132 | "branch": "master", 133 | "version": "1.0", 134 | "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" 135 | } 136 | }, 137 | "symfony/polyfill-mbstring": { 138 | "version": "v1.9.0" 139 | }, 140 | "symfony/routing": { 141 | "version": "4.0", 142 | "recipe": { 143 | "repo": "github.com/symfony/recipes", 144 | "branch": "master", 145 | "version": "4.0", 146 | "ref": "5f514d9d3b8a8aac3d62ae6a86b18b90ed0c7826" 147 | } 148 | }, 149 | "symfony/yaml": { 150 | "version": "v4.1.6" 151 | }, 152 | "twig/twig": { 153 | "version": "v2.5.0" 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /templates/layouts/default.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ site.title }} 4 | 5 | 6 | {% block content '' %} 7 | 8 | 9 | -------------------------------------------------------------------------------- /templates/user.html.twig: -------------------------------------------------------------------------------- 1 | {{ user.username }} 2 | --------------------------------------------------------------------------------