├── web ├── favicon.ico ├── apple-touch-icon.png ├── robots.txt ├── js │ └── components.js ├── app.php ├── app_dev.php ├── .htaccess └── config.php ├── app ├── config │ ├── routing.yml │ ├── config_test.yml │ ├── services.yml │ ├── routing_dev.yml │ ├── config_prod.yml │ ├── parameters.yml.dist │ ├── security.yml │ ├── config_dev.yml │ └── config.yml ├── .htaccess ├── autoload.php ├── AppKernel.php └── MicroKernel.php ├── src ├── .htaccess └── AppBundle │ ├── AppBundle.php │ └── Controller │ └── DefaultController.php ├── .gitignore ├── README.md ├── bin ├── console └── symfony_requirements ├── phpunit.xml.dist ├── composer.json └── composer.lock /web/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/janit/reactfony/HEAD/web/favicon.ico -------------------------------------------------------------------------------- /app/config/routing.yml: -------------------------------------------------------------------------------- 1 | app: 2 | resource: "@AppBundle/Controller/" 3 | type: annotation 4 | -------------------------------------------------------------------------------- /web/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/janit/reactfony/HEAD/web/apple-touch-icon.png -------------------------------------------------------------------------------- /web/robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 3 | 4 | User-agent: * 5 | -------------------------------------------------------------------------------- /app/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Require all denied 3 | 4 | 5 | Order deny,allow 6 | Deny from all 7 | 8 | -------------------------------------------------------------------------------- /src/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Require all denied 3 | 4 | 5 | Order deny,allow 6 | Deny from all 7 | 8 | -------------------------------------------------------------------------------- /src/AppBundle/AppBundle.php: -------------------------------------------------------------------------------- 1 | render('default/index.html.twig', array( 18 | 'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'), 19 | )); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/config/config_prod.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config.yml } 3 | 4 | #framework: 5 | # validation: 6 | # cache: validator.mapping.cache.apc 7 | # serializer: 8 | # cache: serializer.mapping.cache.apc 9 | 10 | #doctrine: 11 | # orm: 12 | # metadata_cache_driver: apc 13 | # result_cache_driver: apc 14 | # query_cache_driver: apc 15 | 16 | monolog: 17 | handlers: 18 | main: 19 | type: fingers_crossed 20 | action_level: error 21 | handler: nested 22 | nested: 23 | type: stream 24 | path: "%kernel.logs_dir%/%kernel.environment%.log" 25 | level: debug 26 | console: 27 | type: console 28 | -------------------------------------------------------------------------------- /web/js/components.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var Timer = React.createClass({ 4 | displayName: "Timer", 5 | 6 | getInitialState: function getInitialState() { 7 | return { secondsElapsed: this.props.startTime }; 8 | }, 9 | tick: function tick() { 10 | this.setState({ secondsElapsed: this.state.secondsElapsed + 1 }); 11 | }, 12 | componentDidMount: function componentDidMount() { 13 | this.interval = setInterval(this.tick, 1000); 14 | }, 15 | componentWillUnmount: function componentWillUnmount() { 16 | clearInterval(this.interval); 17 | }, 18 | render: function render() { 19 | return React.createElement( 20 | "div", 21 | null, 22 | "Seconds: ", 23 | this.state.secondsElapsed 24 | ); 25 | } 26 | }); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | React.js Server Rendering with Symfony 2 | === 3 | 4 | React.js is often thought of as as a front end technology. They can, however be rendered on the server side too - using JavaScript. This naturally turns the scale towards Node.js, but PHP with the v8js installation can handle it too. Let's see how to merge together v8js and the Symfony Microkernel, making it possible to set the initial state of server rendered components using a PHP backend. 5 | 6 | A Symfony project created on December 19, 2015, 9:56 am. 7 | 8 | Details: https://www.symfony.fi/entry/testing-react-js-isomorphic-rendering-with-php-v8js-and-the-symfony-microkernel 9 | 10 | INSTALL 11 | === 12 | 13 | - composer install 14 | - app/console server:run 15 | - http://127.0.0.1:8000/ 16 | -------------------------------------------------------------------------------- /app/config/parameters.yml.dist: -------------------------------------------------------------------------------- 1 | # This file is a "template" of what your parameters.yml file should look like 2 | # Set parameters here that may be different on each deployment target of the app, e.g. development, staging, production. 3 | # http://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration 4 | parameters: 5 | database_host: 127.0.0.1 6 | database_port: ~ 7 | database_name: symfony 8 | database_user: root 9 | database_password: ~ 10 | # You should uncomment this if you want use pdo_sqlite 11 | # database_path: "%kernel.root_dir%/data.db3" 12 | 13 | mailer_transport: smtp 14 | mailer_host: 127.0.0.1 15 | mailer_user: ~ 16 | mailer_password: ~ 17 | 18 | # A secret key that's used to generate certain security-related tokens 19 | secret: ThisTokenIsNotSoSecretChangeIt 20 | -------------------------------------------------------------------------------- /app/config/security.yml: -------------------------------------------------------------------------------- 1 | # To get started with security, check out the documentation: 2 | # http://symfony.com/doc/current/book/security.html 3 | security: 4 | 5 | # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers 6 | providers: 7 | in_memory: 8 | memory: ~ 9 | 10 | firewalls: 11 | # disables authentication for assets and the profiler, adapt it according to your needs 12 | dev: 13 | pattern: ^/(_(profiler|wdt)|css|images|js)/ 14 | security: false 15 | 16 | main: 17 | anonymous: ~ 18 | # activate different ways to authenticate 19 | 20 | # http_basic: ~ 21 | # http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate 22 | 23 | # form_login: ~ 24 | # http://symfony.com/doc/current/cookbook/security/form_login_setup.html 25 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); 21 | $debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod'; 22 | 23 | if ($debug) { 24 | Debug::enable(); 25 | } 26 | 27 | $kernel = new AppKernel($env, $debug); 28 | $application = new Application($kernel); 29 | $application->run($input); 30 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | tests 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | src 27 | 28 | src/*Bundle/Resources 29 | src/*/*Bundle/Resources 30 | src/*/Bundle/*Bundle/Resources 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /web/app.php: -------------------------------------------------------------------------------- 1 | unregister(); 18 | $apcLoader->register(true); 19 | */ 20 | 21 | //require_once __DIR__.'/../app/AppCache.php'; 22 | 23 | $kernel = new AppKernel('prod', false); 24 | $kernel->loadClassCache(); 25 | //$kernel = new AppCache($kernel); 26 | 27 | // When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter 28 | //Request::enableHttpMethodParameterOverride(); 29 | $request = Request::createFromGlobals(); 30 | $response = $kernel->handle($request); 31 | $response->send(); 32 | $kernel->terminate($request, $response); 33 | -------------------------------------------------------------------------------- /app/config/config_dev.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config.yml } 3 | 4 | framework: 5 | router: 6 | resource: "%kernel.root_dir%/config/routing_dev.yml" 7 | strict_requirements: true 8 | profiler: { only_exceptions: false } 9 | 10 | web_profiler: 11 | toolbar: true 12 | intercept_redirects: false 13 | 14 | monolog: 15 | handlers: 16 | main: 17 | type: stream 18 | path: "%kernel.logs_dir%/%kernel.environment%.log" 19 | level: debug 20 | console: 21 | type: console 22 | bubble: false 23 | verbosity_levels: 24 | VERBOSITY_VERBOSE: INFO 25 | VERBOSITY_VERY_VERBOSE: DEBUG 26 | channels: ["!doctrine"] 27 | console_very_verbose: 28 | type: console 29 | bubble: false 30 | verbosity_levels: 31 | VERBOSITY_VERBOSE: NOTICE 32 | VERBOSITY_VERY_VERBOSE: NOTICE 33 | VERBOSITY_DEBUG: DEBUG 34 | channels: ["doctrine"] 35 | # uncomment to get logging in your browser 36 | # you may have to allow bigger header sizes in your Web server configuration 37 | #firephp: 38 | # type: firephp 39 | # level: info 40 | #chromephp: 41 | # type: chromephp 42 | # level: info 43 | 44 | #swiftmailer: 45 | # delivery_address: me@example.com 46 | -------------------------------------------------------------------------------- /web/app_dev.php: -------------------------------------------------------------------------------- 1 | loadClassCache(); 11 | 12 | $app->handle(Request::createFromGlobals())->send(); 13 | 14 | 15 | /* 16 | 17 | use Symfony\Component\HttpFoundation\Request; 18 | use Symfony\Component\Debug\Debug; 19 | 20 | // If you don't want to setup permissions the proper way, just uncomment the following PHP line 21 | // read http://symfony.com/doc/current/book/installation.html#checking-symfony-application-configuration-and-setup 22 | // for more information 23 | //umask(0000); 24 | 25 | // This check prevents access to debug front controllers that are deployed by accident to production servers. 26 | // Feel free to remove this, extend it, or make something more sophisticated. 27 | if (isset($_SERVER['HTTP_CLIENT_IP']) 28 | || isset($_SERVER['HTTP_X_FORWARDED_FOR']) 29 | || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server') 30 | ) { 31 | header('HTTP/1.0 403 Forbidden'); 32 | exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); 33 | } 34 | 35 | /** 36 | * @var Composer\Autoload\ClassLoader $loader 37 | * 38 | $loader = require __DIR__.'/../app/autoload.php'; 39 | Debug::enable(); 40 | 41 | $kernel = new AppKernel('dev', true); 42 | $kernel->loadClassCache(); 43 | $request = Request::createFromGlobals(); 44 | $response = $kernel->handle($request); 45 | $response->send(); 46 | $kernel->terminate($request, $response); 47 | 48 | 49 | */ -------------------------------------------------------------------------------- /app/AppKernel.php: -------------------------------------------------------------------------------- 1 | getEnvironment(), array('dev', 'test'), true)) { 22 | $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); 23 | $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 24 | $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 25 | $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 26 | } 27 | 28 | return $bundles; 29 | } 30 | 31 | public function getRootDir() 32 | { 33 | return __DIR__; 34 | } 35 | 36 | public function getCacheDir() 37 | { 38 | return dirname(__DIR__).'/var/cache/'.$this->getEnvironment(); 39 | } 40 | 41 | public function getLogDir() 42 | { 43 | return dirname(__DIR__).'/var/logs'; 44 | } 45 | 46 | public function registerContainerConfiguration(LoaderInterface $loader) 47 | { 48 | $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml'); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/config/config.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: parameters.yml } 3 | - { resource: security.yml } 4 | - { resource: services.yml } 5 | 6 | # Put parameters here that don't need to change on each machine where the app is deployed 7 | # http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration 8 | parameters: 9 | locale: en 10 | 11 | framework: 12 | #esi: ~ 13 | #translator: { fallbacks: ["%locale%"] } 14 | secret: "%secret%" 15 | router: 16 | resource: "%kernel.root_dir%/config/routing.yml" 17 | strict_requirements: ~ 18 | form: ~ 19 | csrf_protection: ~ 20 | validation: { enable_annotations: true } 21 | #serializer: { enable_annotations: true } 22 | templating: 23 | engines: ['twig'] 24 | #assets_version: SomeVersionScheme 25 | default_locale: "%locale%" 26 | trusted_hosts: ~ 27 | trusted_proxies: ~ 28 | session: 29 | # handler_id set to null will use default session handler from php.ini 30 | handler_id: ~ 31 | save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" 32 | fragments: ~ 33 | http_method_override: true 34 | assets: ~ 35 | 36 | # Twig Configuration 37 | twig: 38 | debug: "%kernel.debug%" 39 | strict_variables: "%kernel.debug%" 40 | 41 | # Doctrine Configuration 42 | doctrine: 43 | dbal: 44 | driver: pdo_mysql 45 | host: "%database_host%" 46 | port: "%database_port%" 47 | dbname: "%database_name%" 48 | user: "%database_user%" 49 | password: "%database_password%" 50 | charset: UTF8 51 | # if using pdo_sqlite as your database driver: 52 | # 1. add the path in parameters.yml 53 | # e.g. database_path: "%kernel.root_dir%/data/data.db3" 54 | # 2. Uncomment database_path in parameters.yml.dist 55 | # 3. Uncomment next line: 56 | # path: "%database_path%" 57 | 58 | orm: 59 | auto_generate_proxy_classes: "%kernel.debug%" 60 | naming_strategy: doctrine.orm.naming_strategy.underscore 61 | auto_mapping: true 62 | 63 | # Swiftmailer Configuration 64 | swiftmailer: 65 | transport: "%mailer_transport%" 66 | host: "%mailer_host%" 67 | username: "%mailer_user%" 68 | password: "%mailer_password%" 69 | spool: { type: memory } 70 | -------------------------------------------------------------------------------- /app/MicroKernel.php: -------------------------------------------------------------------------------- 1 | add('/', 'kernel:indexAction', 'index'); 29 | } 30 | 31 | protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) 32 | { 33 | $c->loadFromExtension('framework', ['secret' => '12345']); 34 | } 35 | 36 | public function indexAction() 37 | { 38 | 39 | $react_source = file_get_contents(__DIR__.'/../web/js/react.js'); 40 | $app_source = file_get_contents(__DIR__.'/../web/js/components.js'); 41 | 42 | $rjs = new ReactJS($react_source, $app_source); 43 | 44 | $rjs->setComponent('Timer', array( 45 | 'startTime' => time() 46 | )); 47 | 48 | $output = ' 49 | 50 | 51 | Epoch at server 52 | 53 | 54 | 55 | 56 |

Epoch server time

57 |

Client side only

58 |
59 |

Server side with a two second client detach

60 |
' . $rjs->getMarkup() . '
61 | 69 | 70 | 71 | '; 72 | 73 | $response = new Response($output); 74 | 75 | return $response; 76 | } 77 | } 78 | 79 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "janit/v8fony", 3 | "license": "proprietary", 4 | "type": "project", 5 | "autoload": { 6 | "psr-4": { 7 | "": "src/" 8 | }, 9 | "files": [ 10 | "app/AppKernel.php" 11 | ] 12 | }, 13 | "autoload-dev": { 14 | "psr-4": { 15 | "Tests\\": "tests/" 16 | } 17 | }, 18 | "require": { 19 | "php": ">=5.5.9", 20 | "symfony/symfony": "3.0.*", 21 | "doctrine/orm": "^2.5", 22 | "doctrine/doctrine-bundle": "^1.6", 23 | "doctrine/doctrine-cache-bundle": "^1.2", 24 | "symfony/swiftmailer-bundle": "^2.3", 25 | "symfony/monolog-bundle": "^2.8", 26 | "sensio/distribution-bundle": "^5.0", 27 | "sensio/framework-extra-bundle": "^3.0.2", 28 | "incenteev/composer-parameter-handler": "^2.0", 29 | "reactjs/react-php-v8js": "^1.0" 30 | }, 31 | "require-dev": { 32 | "sensio/generator-bundle": "^3.0", 33 | "symfony/phpunit-bridge": "^2.7" 34 | }, 35 | "scripts": { 36 | "post-install-cmd": [ 37 | "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", 38 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 39 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 40 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 41 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", 42 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" 43 | ], 44 | "post-update-cmd": [ 45 | "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", 46 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 47 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 48 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 49 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", 50 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" 51 | ] 52 | }, 53 | "extra": { 54 | "symfony-app-dir": "app", 55 | "symfony-bin-dir": "bin", 56 | "symfony-var-dir": "var", 57 | "symfony-web-dir": "web", 58 | "symfony-tests-dir": "tests", 59 | "symfony-assets-install": "relative", 60 | "incenteev-parameters": { 61 | "file": "app/config/parameters.yml" 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /web/.htaccess: -------------------------------------------------------------------------------- 1 | # Use the front controller as index file. It serves as a fallback solution when 2 | # every other rewrite/redirect fails (e.g. in an aliased environment without 3 | # mod_rewrite). Additionally, this reduces the matching process for the 4 | # start page (path "/") because otherwise Apache will apply the rewriting rules 5 | # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). 6 | DirectoryIndex app.php 7 | 8 | # By default, Apache does not evaluate symbolic links if you did not enable this 9 | # feature in your server configuration. Uncomment the following line if you 10 | # install assets as symlinks or if you experience problems related to symlinks 11 | # when compiling LESS/Sass/CoffeScript assets. 12 | # Options FollowSymlinks 13 | 14 | # Disabling MultiViews prevents unwanted negotiation, e.g. "/app" should not resolve 15 | # to the front controller "/app.php" but be rewritten to "/app.php/app". 16 | 17 | Options -MultiViews 18 | 19 | 20 | 21 | RewriteEngine On 22 | 23 | # Determine the RewriteBase automatically and set it as environment variable. 24 | # If you are using Apache aliases to do mass virtual hosting or installed the 25 | # project in a subdirectory, the base path will be prepended to allow proper 26 | # resolution of the app.php file and to redirect to the correct URI. It will 27 | # work in environments without path prefix as well, providing a safe, one-size 28 | # fits all solution. But as you do not need it in this case, you can comment 29 | # the following 2 lines to eliminate the overhead. 30 | RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ 31 | RewriteRule ^(.*) - [E=BASE:%1] 32 | 33 | # Sets the HTTP_AUTHORIZATION header removed by Apache 34 | RewriteCond %{HTTP:Authorization} . 35 | RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 36 | 37 | # Redirect to URI without front controller to prevent duplicate content 38 | # (with and without `/app.php`). Only do this redirect on the initial 39 | # rewrite by Apache and not on subsequent cycles. Otherwise we would get an 40 | # endless redirect loop (request -> rewrite to front controller -> 41 | # redirect -> request -> ...). 42 | # So in case you get a "too many redirects" error or you always get redirected 43 | # to the start page because your Apache does not expose the REDIRECT_STATUS 44 | # environment variable, you have 2 choices: 45 | # - disable this feature by commenting the following 2 lines or 46 | # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the 47 | # following RewriteCond (best solution) 48 | RewriteCond %{ENV:REDIRECT_STATUS} ^$ 49 | RewriteRule ^app\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L] 50 | 51 | # If the requested filename exists, simply serve it. 52 | # We only want to let Apache serve files and not directories. 53 | RewriteCond %{REQUEST_FILENAME} -f 54 | RewriteRule ^ - [L] 55 | 56 | # Rewrite all other queries to the front controller. 57 | RewriteRule ^ %{ENV:BASE}/app.php [L] 58 | 59 | 60 | 61 | 62 | # When mod_rewrite is not available, we instruct a temporary redirect of 63 | # the start page to the front controller explicitly so that the website 64 | # and the generated links can still be used. 65 | RedirectMatch 302 ^/$ /app.php/ 66 | # RedirectTemp cannot be used instead 67 | 68 | 69 | -------------------------------------------------------------------------------- /bin/symfony_requirements: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | getPhpIniConfigPath(); 9 | 10 | echo_title('Symfony2 Requirements Checker'); 11 | 12 | echo '> PHP is using the following php.ini file:'.PHP_EOL; 13 | if ($iniPath) { 14 | echo_style('green', ' '.$iniPath); 15 | } else { 16 | echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!'); 17 | } 18 | 19 | echo PHP_EOL.PHP_EOL; 20 | 21 | echo '> Checking Symfony requirements:'.PHP_EOL.' '; 22 | 23 | $messages = array(); 24 | foreach ($symfonyRequirements->getRequirements() as $req) { 25 | /** @var $req Requirement */ 26 | if ($helpText = get_error_message($req, $lineSize)) { 27 | echo_style('red', 'E'); 28 | $messages['error'][] = $helpText; 29 | } else { 30 | echo_style('green', '.'); 31 | } 32 | } 33 | 34 | $checkPassed = empty($messages['error']); 35 | 36 | foreach ($symfonyRequirements->getRecommendations() as $req) { 37 | if ($helpText = get_error_message($req, $lineSize)) { 38 | echo_style('yellow', 'W'); 39 | $messages['warning'][] = $helpText; 40 | } else { 41 | echo_style('green', '.'); 42 | } 43 | } 44 | 45 | if ($checkPassed) { 46 | echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects'); 47 | } else { 48 | echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects'); 49 | 50 | echo_title('Fix the following mandatory requirements', 'red'); 51 | 52 | foreach ($messages['error'] as $helpText) { 53 | echo ' * '.$helpText.PHP_EOL; 54 | } 55 | } 56 | 57 | if (!empty($messages['warning'])) { 58 | echo_title('Optional recommendations to improve your setup', 'yellow'); 59 | 60 | foreach ($messages['warning'] as $helpText) { 61 | echo ' * '.$helpText.PHP_EOL; 62 | } 63 | } 64 | 65 | echo PHP_EOL; 66 | echo_style('title', 'Note'); 67 | echo ' The command console could use a different php.ini file'.PHP_EOL; 68 | echo_style('title', '~~~~'); 69 | echo ' than the one used with your web server. To be on the'.PHP_EOL; 70 | echo ' safe side, please check the requirements from your web'.PHP_EOL; 71 | echo ' server using the '; 72 | echo_style('yellow', 'web/config.php'); 73 | echo ' script.'.PHP_EOL; 74 | echo PHP_EOL; 75 | 76 | exit($checkPassed ? 0 : 1); 77 | 78 | function get_error_message(Requirement $requirement, $lineSize) 79 | { 80 | if ($requirement->isFulfilled()) { 81 | return; 82 | } 83 | 84 | $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL; 85 | $errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL; 86 | 87 | return $errorMessage; 88 | } 89 | 90 | function echo_title($title, $style = null) 91 | { 92 | $style = $style ?: 'title'; 93 | 94 | echo PHP_EOL; 95 | echo_style($style, $title.PHP_EOL); 96 | echo_style($style, str_repeat('~', strlen($title)).PHP_EOL); 97 | echo PHP_EOL; 98 | } 99 | 100 | function echo_style($style, $message) 101 | { 102 | // ANSI color codes 103 | $styles = array( 104 | 'reset' => "\033[0m", 105 | 'red' => "\033[31m", 106 | 'green' => "\033[32m", 107 | 'yellow' => "\033[33m", 108 | 'error' => "\033[37;41m", 109 | 'success' => "\033[37;42m", 110 | 'title' => "\033[34m", 111 | ); 112 | $supports = has_color_support(); 113 | 114 | echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : ''); 115 | } 116 | 117 | function echo_block($style, $title, $message) 118 | { 119 | $message = ' '.trim($message).' '; 120 | $width = strlen($message); 121 | 122 | echo PHP_EOL.PHP_EOL; 123 | 124 | echo_style($style, str_repeat(' ', $width).PHP_EOL); 125 | echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL); 126 | echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL); 127 | echo_style($style, str_repeat(' ', $width).PHP_EOL); 128 | } 129 | 130 | function has_color_support() 131 | { 132 | static $support; 133 | 134 | if (null === $support) { 135 | if (DIRECTORY_SEPARATOR == '\\') { 136 | $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'); 137 | } else { 138 | $support = function_exists('posix_isatty') && @posix_isatty(STDOUT); 139 | } 140 | } 141 | 142 | return $support; 143 | } 144 | -------------------------------------------------------------------------------- /web/config.php: -------------------------------------------------------------------------------- 1 | getFailedRequirements(); 30 | $minorProblems = $symfonyRequirements->getFailedRecommendations(); 31 | 32 | ?> 33 | 34 | 35 | 36 | 37 | 38 | Symfony Configuration Checker 39 | 40 | 41 | 118 | 119 | 120 |
121 |
122 | 125 | 126 | 146 |
147 | 148 |
149 |
150 |
151 |

Configuration Checker

152 |

153 | This script analyzes your system to check whether is 154 | ready to run Symfony applications. 155 |

156 | 157 | 158 |

Major problems

159 |

Major problems have been detected and must be fixed before continuing:

160 |
    161 | 162 |
  1. getHelpHtml() ?>
  2. 163 | 164 |
165 | 166 | 167 | 168 |

Recommendations

169 |

170 | Additionally, toTo enhance your Symfony experience, 171 | it’s recommended that you fix the following: 172 |

173 |
    174 | 175 |
  1. getHelpHtml() ?>
  2. 176 | 177 |
178 | 179 | 180 | hasPhpIniConfigIssue()): ?> 181 |

* 182 | getPhpIniConfigPath()): ?> 183 | Changes to the php.ini file must be done in "getPhpIniConfigPath() ?>". 184 | 185 | To change settings, create a "php.ini". 186 | 187 |

188 | 189 | 190 | 191 |

All checks passed successfully. Your system is ready to run Symfony applications.

192 | 193 | 194 | 199 |
200 |
201 |
202 |
Symfony Standard Edition
203 |
204 | 205 | 206 | -------------------------------------------------------------------------------- /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#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "00b8784b27287092311f7158d75403c5", 8 | "content-hash": "e0e6bc689d464fd58017ffb6ca957bc7", 9 | "packages": [ 10 | { 11 | "name": "doctrine/annotations", 12 | "version": "v1.2.7", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/doctrine/annotations.git", 16 | "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", 21 | "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "doctrine/lexer": "1.*", 26 | "php": ">=5.3.2" 27 | }, 28 | "require-dev": { 29 | "doctrine/cache": "1.*", 30 | "phpunit/phpunit": "4.*" 31 | }, 32 | "type": "library", 33 | "extra": { 34 | "branch-alias": { 35 | "dev-master": "1.3.x-dev" 36 | } 37 | }, 38 | "autoload": { 39 | "psr-0": { 40 | "Doctrine\\Common\\Annotations\\": "lib/" 41 | } 42 | }, 43 | "notification-url": "https://packagist.org/downloads/", 44 | "license": [ 45 | "MIT" 46 | ], 47 | "authors": [ 48 | { 49 | "name": "Roman Borschel", 50 | "email": "roman@code-factory.org" 51 | }, 52 | { 53 | "name": "Benjamin Eberlei", 54 | "email": "kontakt@beberlei.de" 55 | }, 56 | { 57 | "name": "Guilherme Blanco", 58 | "email": "guilhermeblanco@gmail.com" 59 | }, 60 | { 61 | "name": "Jonathan Wage", 62 | "email": "jonwage@gmail.com" 63 | }, 64 | { 65 | "name": "Johannes Schmitt", 66 | "email": "schmittjoh@gmail.com" 67 | } 68 | ], 69 | "description": "Docblock Annotations Parser", 70 | "homepage": "http://www.doctrine-project.org", 71 | "keywords": [ 72 | "annotations", 73 | "docblock", 74 | "parser" 75 | ], 76 | "time": "2015-08-31 12:32:49" 77 | }, 78 | { 79 | "name": "doctrine/cache", 80 | "version": "v1.5.1", 81 | "source": { 82 | "type": "git", 83 | "url": "https://github.com/doctrine/cache.git", 84 | "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e" 85 | }, 86 | "dist": { 87 | "type": "zip", 88 | "url": "https://api.github.com/repos/doctrine/cache/zipball/2b9cec5a5e722010cbebc91713d4c11eaa064d5e", 89 | "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e", 90 | "shasum": "" 91 | }, 92 | "require": { 93 | "php": ">=5.3.2" 94 | }, 95 | "conflict": { 96 | "doctrine/common": ">2.2,<2.4" 97 | }, 98 | "require-dev": { 99 | "phpunit/phpunit": ">=3.7", 100 | "predis/predis": "~1.0", 101 | "satooshi/php-coveralls": "~0.6" 102 | }, 103 | "type": "library", 104 | "extra": { 105 | "branch-alias": { 106 | "dev-master": "1.5.x-dev" 107 | } 108 | }, 109 | "autoload": { 110 | "psr-4": { 111 | "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" 112 | } 113 | }, 114 | "notification-url": "https://packagist.org/downloads/", 115 | "license": [ 116 | "MIT" 117 | ], 118 | "authors": [ 119 | { 120 | "name": "Roman Borschel", 121 | "email": "roman@code-factory.org" 122 | }, 123 | { 124 | "name": "Benjamin Eberlei", 125 | "email": "kontakt@beberlei.de" 126 | }, 127 | { 128 | "name": "Guilherme Blanco", 129 | "email": "guilhermeblanco@gmail.com" 130 | }, 131 | { 132 | "name": "Jonathan Wage", 133 | "email": "jonwage@gmail.com" 134 | }, 135 | { 136 | "name": "Johannes Schmitt", 137 | "email": "schmittjoh@gmail.com" 138 | } 139 | ], 140 | "description": "Caching library offering an object-oriented API for many cache backends", 141 | "homepage": "http://www.doctrine-project.org", 142 | "keywords": [ 143 | "cache", 144 | "caching" 145 | ], 146 | "time": "2015-11-02 18:35:48" 147 | }, 148 | { 149 | "name": "doctrine/collections", 150 | "version": "v1.3.0", 151 | "source": { 152 | "type": "git", 153 | "url": "https://github.com/doctrine/collections.git", 154 | "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a" 155 | }, 156 | "dist": { 157 | "type": "zip", 158 | "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a", 159 | "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a", 160 | "shasum": "" 161 | }, 162 | "require": { 163 | "php": ">=5.3.2" 164 | }, 165 | "require-dev": { 166 | "phpunit/phpunit": "~4.0" 167 | }, 168 | "type": "library", 169 | "extra": { 170 | "branch-alias": { 171 | "dev-master": "1.2.x-dev" 172 | } 173 | }, 174 | "autoload": { 175 | "psr-0": { 176 | "Doctrine\\Common\\Collections\\": "lib/" 177 | } 178 | }, 179 | "notification-url": "https://packagist.org/downloads/", 180 | "license": [ 181 | "MIT" 182 | ], 183 | "authors": [ 184 | { 185 | "name": "Roman Borschel", 186 | "email": "roman@code-factory.org" 187 | }, 188 | { 189 | "name": "Benjamin Eberlei", 190 | "email": "kontakt@beberlei.de" 191 | }, 192 | { 193 | "name": "Guilherme Blanco", 194 | "email": "guilhermeblanco@gmail.com" 195 | }, 196 | { 197 | "name": "Jonathan Wage", 198 | "email": "jonwage@gmail.com" 199 | }, 200 | { 201 | "name": "Johannes Schmitt", 202 | "email": "schmittjoh@gmail.com" 203 | } 204 | ], 205 | "description": "Collections Abstraction library", 206 | "homepage": "http://www.doctrine-project.org", 207 | "keywords": [ 208 | "array", 209 | "collections", 210 | "iterator" 211 | ], 212 | "time": "2015-04-14 22:21:58" 213 | }, 214 | { 215 | "name": "doctrine/common", 216 | "version": "v2.5.1", 217 | "source": { 218 | "type": "git", 219 | "url": "https://github.com/doctrine/common.git", 220 | "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9" 221 | }, 222 | "dist": { 223 | "type": "zip", 224 | "url": "https://api.github.com/repos/doctrine/common/zipball/0009b8f0d4a917aabc971fb089eba80e872f83f9", 225 | "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9", 226 | "shasum": "" 227 | }, 228 | "require": { 229 | "doctrine/annotations": "1.*", 230 | "doctrine/cache": "1.*", 231 | "doctrine/collections": "1.*", 232 | "doctrine/inflector": "1.*", 233 | "doctrine/lexer": "1.*", 234 | "php": ">=5.3.2" 235 | }, 236 | "require-dev": { 237 | "phpunit/phpunit": "~3.7" 238 | }, 239 | "type": "library", 240 | "extra": { 241 | "branch-alias": { 242 | "dev-master": "2.6.x-dev" 243 | } 244 | }, 245 | "autoload": { 246 | "psr-0": { 247 | "Doctrine\\Common\\": "lib/" 248 | } 249 | }, 250 | "notification-url": "https://packagist.org/downloads/", 251 | "license": [ 252 | "MIT" 253 | ], 254 | "authors": [ 255 | { 256 | "name": "Roman Borschel", 257 | "email": "roman@code-factory.org" 258 | }, 259 | { 260 | "name": "Benjamin Eberlei", 261 | "email": "kontakt@beberlei.de" 262 | }, 263 | { 264 | "name": "Guilherme Blanco", 265 | "email": "guilhermeblanco@gmail.com" 266 | }, 267 | { 268 | "name": "Jonathan Wage", 269 | "email": "jonwage@gmail.com" 270 | }, 271 | { 272 | "name": "Johannes Schmitt", 273 | "email": "schmittjoh@gmail.com" 274 | } 275 | ], 276 | "description": "Common Library for Doctrine projects", 277 | "homepage": "http://www.doctrine-project.org", 278 | "keywords": [ 279 | "annotations", 280 | "collections", 281 | "eventmanager", 282 | "persistence", 283 | "spl" 284 | ], 285 | "time": "2015-08-31 13:00:22" 286 | }, 287 | { 288 | "name": "doctrine/dbal", 289 | "version": "v2.5.2", 290 | "source": { 291 | "type": "git", 292 | "url": "https://github.com/doctrine/dbal.git", 293 | "reference": "01dbcbc5cd0a913d751418e635434a18a2f2a75c" 294 | }, 295 | "dist": { 296 | "type": "zip", 297 | "url": "https://api.github.com/repos/doctrine/dbal/zipball/01dbcbc5cd0a913d751418e635434a18a2f2a75c", 298 | "reference": "01dbcbc5cd0a913d751418e635434a18a2f2a75c", 299 | "shasum": "" 300 | }, 301 | "require": { 302 | "doctrine/common": ">=2.4,<2.6-dev", 303 | "php": ">=5.3.2" 304 | }, 305 | "require-dev": { 306 | "phpunit/phpunit": "4.*", 307 | "symfony/console": "2.*" 308 | }, 309 | "suggest": { 310 | "symfony/console": "For helpful console commands such as SQL execution and import of files." 311 | }, 312 | "bin": [ 313 | "bin/doctrine-dbal" 314 | ], 315 | "type": "library", 316 | "extra": { 317 | "branch-alias": { 318 | "dev-master": "2.5.x-dev" 319 | } 320 | }, 321 | "autoload": { 322 | "psr-0": { 323 | "Doctrine\\DBAL\\": "lib/" 324 | } 325 | }, 326 | "notification-url": "https://packagist.org/downloads/", 327 | "license": [ 328 | "MIT" 329 | ], 330 | "authors": [ 331 | { 332 | "name": "Roman Borschel", 333 | "email": "roman@code-factory.org" 334 | }, 335 | { 336 | "name": "Benjamin Eberlei", 337 | "email": "kontakt@beberlei.de" 338 | }, 339 | { 340 | "name": "Guilherme Blanco", 341 | "email": "guilhermeblanco@gmail.com" 342 | }, 343 | { 344 | "name": "Jonathan Wage", 345 | "email": "jonwage@gmail.com" 346 | } 347 | ], 348 | "description": "Database Abstraction Layer", 349 | "homepage": "http://www.doctrine-project.org", 350 | "keywords": [ 351 | "database", 352 | "dbal", 353 | "persistence", 354 | "queryobject" 355 | ], 356 | "time": "2015-09-16 16:29:33" 357 | }, 358 | { 359 | "name": "doctrine/doctrine-bundle", 360 | "version": "1.6.0", 361 | "source": { 362 | "type": "git", 363 | "url": "https://github.com/doctrine/DoctrineBundle.git", 364 | "reference": "a5b3ba908ba68f3e14e42762a7b940fde65ed7da" 365 | }, 366 | "dist": { 367 | "type": "zip", 368 | "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/a5b3ba908ba68f3e14e42762a7b940fde65ed7da", 369 | "reference": "a5b3ba908ba68f3e14e42762a7b940fde65ed7da", 370 | "shasum": "" 371 | }, 372 | "require": { 373 | "doctrine/dbal": "~2.3", 374 | "doctrine/doctrine-cache-bundle": "~1.0", 375 | "jdorn/sql-formatter": "~1.1", 376 | "php": ">=5.3.2", 377 | "symfony/console": "~2.3|~3.0", 378 | "symfony/doctrine-bridge": "~2.2|~3.0", 379 | "symfony/framework-bundle": "~2.3|~3.0" 380 | }, 381 | "require-dev": { 382 | "doctrine/orm": "~2.3", 383 | "phpunit/phpunit": "~4", 384 | "satooshi/php-coveralls": "~0.6.1", 385 | "symfony/validator": "~2.2|~3.0", 386 | "symfony/yaml": "~2.2|~3.0", 387 | "twig/twig": "~1.10" 388 | }, 389 | "suggest": { 390 | "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", 391 | "symfony/web-profiler-bundle": "to use the data collector" 392 | }, 393 | "type": "symfony-bundle", 394 | "extra": { 395 | "branch-alias": { 396 | "dev-master": "1.6.x-dev" 397 | } 398 | }, 399 | "autoload": { 400 | "psr-4": { 401 | "Doctrine\\Bundle\\DoctrineBundle\\": "" 402 | } 403 | }, 404 | "notification-url": "https://packagist.org/downloads/", 405 | "license": [ 406 | "MIT" 407 | ], 408 | "authors": [ 409 | { 410 | "name": "Symfony Community", 411 | "homepage": "http://symfony.com/contributors" 412 | }, 413 | { 414 | "name": "Benjamin Eberlei", 415 | "email": "kontakt@beberlei.de" 416 | }, 417 | { 418 | "name": "Doctrine Project", 419 | "homepage": "http://www.doctrine-project.org/" 420 | }, 421 | { 422 | "name": "Fabien Potencier", 423 | "email": "fabien@symfony.com" 424 | } 425 | ], 426 | "description": "Symfony DoctrineBundle", 427 | "homepage": "http://www.doctrine-project.org", 428 | "keywords": [ 429 | "database", 430 | "dbal", 431 | "orm", 432 | "persistence" 433 | ], 434 | "time": "2015-11-04 21:33:02" 435 | }, 436 | { 437 | "name": "doctrine/doctrine-cache-bundle", 438 | "version": "1.2.2", 439 | "source": { 440 | "type": "git", 441 | "url": "https://github.com/doctrine/DoctrineCacheBundle.git", 442 | "reference": "030ff41ef1db66370b36467086bfb817a661fe6a" 443 | }, 444 | "dist": { 445 | "type": "zip", 446 | "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/030ff41ef1db66370b36467086bfb817a661fe6a", 447 | "reference": "030ff41ef1db66370b36467086bfb817a661fe6a", 448 | "shasum": "" 449 | }, 450 | "require": { 451 | "doctrine/cache": "^1.4.2", 452 | "doctrine/inflector": "~1.0", 453 | "php": ">=5.3.2", 454 | "symfony/doctrine-bridge": "~2.2|~3.0" 455 | }, 456 | "require-dev": { 457 | "instaclick/coding-standard": "~1.1", 458 | "instaclick/object-calisthenics-sniffs": "dev-master", 459 | "instaclick/symfony2-coding-standard": "dev-remaster", 460 | "phpunit/phpunit": "~4", 461 | "satooshi/php-coveralls": "~0.6.1", 462 | "squizlabs/php_codesniffer": "~1.5", 463 | "symfony/console": "~2.2|~3.0", 464 | "symfony/finder": "~2.2|~3.0", 465 | "symfony/framework-bundle": "~2.2|~3.0", 466 | "symfony/phpunit-bridge": "~2.7|~3.0", 467 | "symfony/security-acl": "~2.3|~3.0", 468 | "symfony/validator": "~2.2|~3.0", 469 | "symfony/yaml": "~2.2|~3.0" 470 | }, 471 | "suggest": { 472 | "symfony/security-acl": "For using this bundle to cache ACLs" 473 | }, 474 | "type": "symfony-bundle", 475 | "extra": { 476 | "branch-alias": { 477 | "dev-master": "1.2.x-dev" 478 | } 479 | }, 480 | "autoload": { 481 | "psr-4": { 482 | "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" 483 | } 484 | }, 485 | "notification-url": "https://packagist.org/downloads/", 486 | "license": [ 487 | "MIT" 488 | ], 489 | "authors": [ 490 | { 491 | "name": "Symfony Community", 492 | "homepage": "http://symfony.com/contributors" 493 | }, 494 | { 495 | "name": "Benjamin Eberlei", 496 | "email": "kontakt@beberlei.de" 497 | }, 498 | { 499 | "name": "Fabio B. Silva", 500 | "email": "fabio.bat.silva@gmail.com" 501 | }, 502 | { 503 | "name": "Guilherme Blanco", 504 | "email": "guilhermeblanco@hotmail.com" 505 | }, 506 | { 507 | "name": "Doctrine Project", 508 | "homepage": "http://www.doctrine-project.org/" 509 | }, 510 | { 511 | "name": "Fabien Potencier", 512 | "email": "fabien@symfony.com" 513 | } 514 | ], 515 | "description": "Symfony Bundle for Doctrine Cache", 516 | "homepage": "http://www.doctrine-project.org", 517 | "keywords": [ 518 | "cache", 519 | "caching" 520 | ], 521 | "time": "2015-11-27 04:59:07" 522 | }, 523 | { 524 | "name": "doctrine/inflector", 525 | "version": "v1.1.0", 526 | "source": { 527 | "type": "git", 528 | "url": "https://github.com/doctrine/inflector.git", 529 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" 530 | }, 531 | "dist": { 532 | "type": "zip", 533 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", 534 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", 535 | "shasum": "" 536 | }, 537 | "require": { 538 | "php": ">=5.3.2" 539 | }, 540 | "require-dev": { 541 | "phpunit/phpunit": "4.*" 542 | }, 543 | "type": "library", 544 | "extra": { 545 | "branch-alias": { 546 | "dev-master": "1.1.x-dev" 547 | } 548 | }, 549 | "autoload": { 550 | "psr-0": { 551 | "Doctrine\\Common\\Inflector\\": "lib/" 552 | } 553 | }, 554 | "notification-url": "https://packagist.org/downloads/", 555 | "license": [ 556 | "MIT" 557 | ], 558 | "authors": [ 559 | { 560 | "name": "Roman Borschel", 561 | "email": "roman@code-factory.org" 562 | }, 563 | { 564 | "name": "Benjamin Eberlei", 565 | "email": "kontakt@beberlei.de" 566 | }, 567 | { 568 | "name": "Guilherme Blanco", 569 | "email": "guilhermeblanco@gmail.com" 570 | }, 571 | { 572 | "name": "Jonathan Wage", 573 | "email": "jonwage@gmail.com" 574 | }, 575 | { 576 | "name": "Johannes Schmitt", 577 | "email": "schmittjoh@gmail.com" 578 | } 579 | ], 580 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 581 | "homepage": "http://www.doctrine-project.org", 582 | "keywords": [ 583 | "inflection", 584 | "pluralize", 585 | "singularize", 586 | "string" 587 | ], 588 | "time": "2015-11-06 14:35:42" 589 | }, 590 | { 591 | "name": "doctrine/instantiator", 592 | "version": "1.0.5", 593 | "source": { 594 | "type": "git", 595 | "url": "https://github.com/doctrine/instantiator.git", 596 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 597 | }, 598 | "dist": { 599 | "type": "zip", 600 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 601 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 602 | "shasum": "" 603 | }, 604 | "require": { 605 | "php": ">=5.3,<8.0-DEV" 606 | }, 607 | "require-dev": { 608 | "athletic/athletic": "~0.1.8", 609 | "ext-pdo": "*", 610 | "ext-phar": "*", 611 | "phpunit/phpunit": "~4.0", 612 | "squizlabs/php_codesniffer": "~2.0" 613 | }, 614 | "type": "library", 615 | "extra": { 616 | "branch-alias": { 617 | "dev-master": "1.0.x-dev" 618 | } 619 | }, 620 | "autoload": { 621 | "psr-4": { 622 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 623 | } 624 | }, 625 | "notification-url": "https://packagist.org/downloads/", 626 | "license": [ 627 | "MIT" 628 | ], 629 | "authors": [ 630 | { 631 | "name": "Marco Pivetta", 632 | "email": "ocramius@gmail.com", 633 | "homepage": "http://ocramius.github.com/" 634 | } 635 | ], 636 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 637 | "homepage": "https://github.com/doctrine/instantiator", 638 | "keywords": [ 639 | "constructor", 640 | "instantiate" 641 | ], 642 | "time": "2015-06-14 21:17:01" 643 | }, 644 | { 645 | "name": "doctrine/lexer", 646 | "version": "v1.0.1", 647 | "source": { 648 | "type": "git", 649 | "url": "https://github.com/doctrine/lexer.git", 650 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 651 | }, 652 | "dist": { 653 | "type": "zip", 654 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 655 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 656 | "shasum": "" 657 | }, 658 | "require": { 659 | "php": ">=5.3.2" 660 | }, 661 | "type": "library", 662 | "extra": { 663 | "branch-alias": { 664 | "dev-master": "1.0.x-dev" 665 | } 666 | }, 667 | "autoload": { 668 | "psr-0": { 669 | "Doctrine\\Common\\Lexer\\": "lib/" 670 | } 671 | }, 672 | "notification-url": "https://packagist.org/downloads/", 673 | "license": [ 674 | "MIT" 675 | ], 676 | "authors": [ 677 | { 678 | "name": "Roman Borschel", 679 | "email": "roman@code-factory.org" 680 | }, 681 | { 682 | "name": "Guilherme Blanco", 683 | "email": "guilhermeblanco@gmail.com" 684 | }, 685 | { 686 | "name": "Johannes Schmitt", 687 | "email": "schmittjoh@gmail.com" 688 | } 689 | ], 690 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 691 | "homepage": "http://www.doctrine-project.org", 692 | "keywords": [ 693 | "lexer", 694 | "parser" 695 | ], 696 | "time": "2014-09-09 13:34:57" 697 | }, 698 | { 699 | "name": "doctrine/orm", 700 | "version": "v2.5.2", 701 | "source": { 702 | "type": "git", 703 | "url": "https://github.com/doctrine/doctrine2.git", 704 | "reference": "464b5fdbfbbeb4a65465ac173c4c5d90960f41ff" 705 | }, 706 | "dist": { 707 | "type": "zip", 708 | "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/464b5fdbfbbeb4a65465ac173c4c5d90960f41ff", 709 | "reference": "464b5fdbfbbeb4a65465ac173c4c5d90960f41ff", 710 | "shasum": "" 711 | }, 712 | "require": { 713 | "doctrine/cache": "~1.4", 714 | "doctrine/collections": "~1.2", 715 | "doctrine/common": ">=2.5-dev,<2.6-dev", 716 | "doctrine/dbal": ">=2.5-dev,<2.6-dev", 717 | "doctrine/instantiator": "~1.0.1", 718 | "ext-pdo": "*", 719 | "php": ">=5.4", 720 | "symfony/console": "~2.5|~3.0" 721 | }, 722 | "require-dev": { 723 | "phpunit/phpunit": "~4.0", 724 | "satooshi/php-coveralls": "dev-master", 725 | "symfony/yaml": "~2.3|~3.0" 726 | }, 727 | "suggest": { 728 | "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" 729 | }, 730 | "bin": [ 731 | "bin/doctrine", 732 | "bin/doctrine.php" 733 | ], 734 | "type": "library", 735 | "extra": { 736 | "branch-alias": { 737 | "dev-master": "2.6.x-dev" 738 | } 739 | }, 740 | "autoload": { 741 | "psr-0": { 742 | "Doctrine\\ORM\\": "lib/" 743 | } 744 | }, 745 | "notification-url": "https://packagist.org/downloads/", 746 | "license": [ 747 | "MIT" 748 | ], 749 | "authors": [ 750 | { 751 | "name": "Roman Borschel", 752 | "email": "roman@code-factory.org" 753 | }, 754 | { 755 | "name": "Benjamin Eberlei", 756 | "email": "kontakt@beberlei.de" 757 | }, 758 | { 759 | "name": "Guilherme Blanco", 760 | "email": "guilhermeblanco@gmail.com" 761 | }, 762 | { 763 | "name": "Jonathan Wage", 764 | "email": "jonwage@gmail.com" 765 | } 766 | ], 767 | "description": "Object-Relational-Mapper for PHP", 768 | "homepage": "http://www.doctrine-project.org", 769 | "keywords": [ 770 | "database", 771 | "orm" 772 | ], 773 | "time": "2015-11-23 12:44:25" 774 | }, 775 | { 776 | "name": "incenteev/composer-parameter-handler", 777 | "version": "v2.1.2", 778 | "source": { 779 | "type": "git", 780 | "url": "https://github.com/Incenteev/ParameterHandler.git", 781 | "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc" 782 | }, 783 | "dist": { 784 | "type": "zip", 785 | "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", 786 | "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", 787 | "shasum": "" 788 | }, 789 | "require": { 790 | "php": ">=5.3.3", 791 | "symfony/yaml": "~2.3|~3.0" 792 | }, 793 | "require-dev": { 794 | "composer/composer": "1.0.*@dev", 795 | "phpspec/prophecy-phpunit": "~1.0", 796 | "symfony/filesystem": "~2.2" 797 | }, 798 | "type": "library", 799 | "extra": { 800 | "branch-alias": { 801 | "dev-master": "2.1.x-dev" 802 | } 803 | }, 804 | "autoload": { 805 | "psr-4": { 806 | "Incenteev\\ParameterHandler\\": "" 807 | } 808 | }, 809 | "notification-url": "https://packagist.org/downloads/", 810 | "license": [ 811 | "MIT" 812 | ], 813 | "authors": [ 814 | { 815 | "name": "Christophe Coevoet", 816 | "email": "stof@notk.org" 817 | } 818 | ], 819 | "description": "Composer script handling your ignored parameter file", 820 | "homepage": "https://github.com/Incenteev/ParameterHandler", 821 | "keywords": [ 822 | "parameters management" 823 | ], 824 | "time": "2015-11-10 17:04:01" 825 | }, 826 | { 827 | "name": "jdorn/sql-formatter", 828 | "version": "v1.2.17", 829 | "source": { 830 | "type": "git", 831 | "url": "https://github.com/jdorn/sql-formatter.git", 832 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" 833 | }, 834 | "dist": { 835 | "type": "zip", 836 | "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", 837 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", 838 | "shasum": "" 839 | }, 840 | "require": { 841 | "php": ">=5.2.4" 842 | }, 843 | "require-dev": { 844 | "phpunit/phpunit": "3.7.*" 845 | }, 846 | "type": "library", 847 | "extra": { 848 | "branch-alias": { 849 | "dev-master": "1.3.x-dev" 850 | } 851 | }, 852 | "autoload": { 853 | "classmap": [ 854 | "lib" 855 | ] 856 | }, 857 | "notification-url": "https://packagist.org/downloads/", 858 | "license": [ 859 | "MIT" 860 | ], 861 | "authors": [ 862 | { 863 | "name": "Jeremy Dorn", 864 | "email": "jeremy@jeremydorn.com", 865 | "homepage": "http://jeremydorn.com/" 866 | } 867 | ], 868 | "description": "a PHP SQL highlighting library", 869 | "homepage": "https://github.com/jdorn/sql-formatter/", 870 | "keywords": [ 871 | "highlight", 872 | "sql" 873 | ], 874 | "time": "2014-01-12 16:20:24" 875 | }, 876 | { 877 | "name": "monolog/monolog", 878 | "version": "1.17.2", 879 | "source": { 880 | "type": "git", 881 | "url": "https://github.com/Seldaek/monolog.git", 882 | "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24" 883 | }, 884 | "dist": { 885 | "type": "zip", 886 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bee7f0dc9c3e0b69a6039697533dca1e845c8c24", 887 | "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24", 888 | "shasum": "" 889 | }, 890 | "require": { 891 | "php": ">=5.3.0", 892 | "psr/log": "~1.0" 893 | }, 894 | "provide": { 895 | "psr/log-implementation": "1.0.0" 896 | }, 897 | "require-dev": { 898 | "aws/aws-sdk-php": "^2.4.9", 899 | "doctrine/couchdb": "~1.0@dev", 900 | "graylog2/gelf-php": "~1.0", 901 | "jakub-onderka/php-parallel-lint": "0.9", 902 | "php-console/php-console": "^3.1.3", 903 | "phpunit/phpunit": "~4.5", 904 | "phpunit/phpunit-mock-objects": "2.3.0", 905 | "raven/raven": "^0.13", 906 | "ruflin/elastica": ">=0.90 <3.0", 907 | "swiftmailer/swiftmailer": "~5.3", 908 | "videlalvaro/php-amqplib": "~2.4" 909 | }, 910 | "suggest": { 911 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 912 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 913 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 914 | "ext-mongo": "Allow sending log messages to a MongoDB server", 915 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 916 | "php-console/php-console": "Allow sending log messages to Google Chrome", 917 | "raven/raven": "Allow sending log messages to a Sentry server", 918 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 919 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", 920 | "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" 921 | }, 922 | "type": "library", 923 | "extra": { 924 | "branch-alias": { 925 | "dev-master": "1.16.x-dev" 926 | } 927 | }, 928 | "autoload": { 929 | "psr-4": { 930 | "Monolog\\": "src/Monolog" 931 | } 932 | }, 933 | "notification-url": "https://packagist.org/downloads/", 934 | "license": [ 935 | "MIT" 936 | ], 937 | "authors": [ 938 | { 939 | "name": "Jordi Boggiano", 940 | "email": "j.boggiano@seld.be", 941 | "homepage": "http://seld.be" 942 | } 943 | ], 944 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 945 | "homepage": "http://github.com/Seldaek/monolog", 946 | "keywords": [ 947 | "log", 948 | "logging", 949 | "psr-3" 950 | ], 951 | "time": "2015-10-14 12:51:02" 952 | }, 953 | { 954 | "name": "paragonie/random_compat", 955 | "version": "1.1.0", 956 | "source": { 957 | "type": "git", 958 | "url": "https://github.com/paragonie/random_compat.git", 959 | "reference": "19f765b66c6fbb56ee3b11bc16d52e38eebdc295" 960 | }, 961 | "dist": { 962 | "type": "zip", 963 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/19f765b66c6fbb56ee3b11bc16d52e38eebdc295", 964 | "reference": "19f765b66c6fbb56ee3b11bc16d52e38eebdc295", 965 | "shasum": "" 966 | }, 967 | "require": { 968 | "php": ">=5.2.0" 969 | }, 970 | "require-dev": { 971 | "phpunit/phpunit": "4.*|5.*" 972 | }, 973 | "suggest": { 974 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 975 | }, 976 | "type": "library", 977 | "autoload": { 978 | "files": [ 979 | "lib/random.php" 980 | ] 981 | }, 982 | "notification-url": "https://packagist.org/downloads/", 983 | "license": [ 984 | "MIT" 985 | ], 986 | "authors": [ 987 | { 988 | "name": "Paragon Initiative Enterprises", 989 | "email": "security@paragonie.com", 990 | "homepage": "https://paragonie.com" 991 | } 992 | ], 993 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 994 | "keywords": [ 995 | "csprng", 996 | "pseudorandom", 997 | "random" 998 | ], 999 | "time": "2015-11-10 00:45:41" 1000 | }, 1001 | { 1002 | "name": "psr/log", 1003 | "version": "1.0.0", 1004 | "source": { 1005 | "type": "git", 1006 | "url": "https://github.com/php-fig/log.git", 1007 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" 1008 | }, 1009 | "dist": { 1010 | "type": "zip", 1011 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", 1012 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", 1013 | "shasum": "" 1014 | }, 1015 | "type": "library", 1016 | "autoload": { 1017 | "psr-0": { 1018 | "Psr\\Log\\": "" 1019 | } 1020 | }, 1021 | "notification-url": "https://packagist.org/downloads/", 1022 | "license": [ 1023 | "MIT" 1024 | ], 1025 | "authors": [ 1026 | { 1027 | "name": "PHP-FIG", 1028 | "homepage": "http://www.php-fig.org/" 1029 | } 1030 | ], 1031 | "description": "Common interface for logging libraries", 1032 | "keywords": [ 1033 | "log", 1034 | "psr", 1035 | "psr-3" 1036 | ], 1037 | "time": "2012-12-21 11:40:51" 1038 | }, 1039 | { 1040 | "name": "reactjs/react-php-v8js", 1041 | "version": "v1.0.0", 1042 | "source": { 1043 | "type": "git", 1044 | "url": "https://github.com/reactjs/react-php-v8js.git", 1045 | "reference": "6bfbf166cdca7c6ef640ceb450d8ecc59ed2aeba" 1046 | }, 1047 | "dist": { 1048 | "type": "zip", 1049 | "url": "https://api.github.com/repos/reactjs/react-php-v8js/zipball/6bfbf166cdca7c6ef640ceb450d8ecc59ed2aeba", 1050 | "reference": "6bfbf166cdca7c6ef640ceb450d8ecc59ed2aeba", 1051 | "shasum": "" 1052 | }, 1053 | "require": { 1054 | "ext-v8js": ">=0.1.3" 1055 | }, 1056 | "type": "library", 1057 | "autoload": { 1058 | "classmap": [ 1059 | "ReactJS.php" 1060 | ] 1061 | }, 1062 | "notification-url": "https://packagist.org/downloads/", 1063 | "license": [ 1064 | "BSD-3-Clause" 1065 | ], 1066 | "description": "PHP library that renders React components on the server", 1067 | "time": "2015-05-26 17:55:07" 1068 | }, 1069 | { 1070 | "name": "sensio/distribution-bundle", 1071 | "version": "v5.0.2", 1072 | "source": { 1073 | "type": "git", 1074 | "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", 1075 | "reference": "37bdfaa164396bec6ae00e37c23a6e187ad01bcc" 1076 | }, 1077 | "dist": { 1078 | "type": "zip", 1079 | "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/37bdfaa164396bec6ae00e37c23a6e187ad01bcc", 1080 | "reference": "37bdfaa164396bec6ae00e37c23a6e187ad01bcc", 1081 | "shasum": "" 1082 | }, 1083 | "require": { 1084 | "php": ">=5.3.9", 1085 | "sensiolabs/security-checker": "~3.0", 1086 | "symfony/class-loader": "~2.3|~3.0", 1087 | "symfony/config": "~2.3|~3.0", 1088 | "symfony/dependency-injection": "~2.3|~3.0", 1089 | "symfony/filesystem": "~2.3|~3.0", 1090 | "symfony/http-kernel": "~2.3|~3.0", 1091 | "symfony/process": "~2.3|~3.0" 1092 | }, 1093 | "type": "symfony-bundle", 1094 | "extra": { 1095 | "branch-alias": { 1096 | "dev-master": "5.0.x-dev" 1097 | } 1098 | }, 1099 | "autoload": { 1100 | "psr-4": { 1101 | "Sensio\\Bundle\\DistributionBundle\\": "" 1102 | } 1103 | }, 1104 | "notification-url": "https://packagist.org/downloads/", 1105 | "license": [ 1106 | "MIT" 1107 | ], 1108 | "authors": [ 1109 | { 1110 | "name": "Fabien Potencier", 1111 | "email": "fabien@symfony.com" 1112 | } 1113 | ], 1114 | "description": "Base bundle for Symfony Distributions", 1115 | "keywords": [ 1116 | "configuration", 1117 | "distribution" 1118 | ], 1119 | "time": "2015-11-26 18:10:40" 1120 | }, 1121 | { 1122 | "name": "sensio/framework-extra-bundle", 1123 | "version": "v3.0.11", 1124 | "source": { 1125 | "type": "git", 1126 | "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", 1127 | "reference": "a79e205737b58d557c05caef6dfa8f94d8084bca" 1128 | }, 1129 | "dist": { 1130 | "type": "zip", 1131 | "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/a79e205737b58d557c05caef6dfa8f94d8084bca", 1132 | "reference": "a79e205737b58d557c05caef6dfa8f94d8084bca", 1133 | "shasum": "" 1134 | }, 1135 | "require": { 1136 | "doctrine/common": "~2.2", 1137 | "symfony/framework-bundle": "~2.3|~3.0" 1138 | }, 1139 | "require-dev": { 1140 | "symfony/expression-language": "~2.4|~3.0", 1141 | "symfony/security-bundle": "~2.4|~3.0" 1142 | }, 1143 | "suggest": { 1144 | "symfony/expression-language": "", 1145 | "symfony/psr-http-message-bridge": "To use the PSR-7 converters", 1146 | "symfony/security-bundle": "" 1147 | }, 1148 | "type": "symfony-bundle", 1149 | "extra": { 1150 | "branch-alias": { 1151 | "dev-master": "3.0.x-dev" 1152 | } 1153 | }, 1154 | "autoload": { 1155 | "psr-4": { 1156 | "Sensio\\Bundle\\FrameworkExtraBundle\\": "" 1157 | } 1158 | }, 1159 | "notification-url": "https://packagist.org/downloads/", 1160 | "license": [ 1161 | "MIT" 1162 | ], 1163 | "authors": [ 1164 | { 1165 | "name": "Fabien Potencier", 1166 | "email": "fabien@symfony.com" 1167 | } 1168 | ], 1169 | "description": "This bundle provides a way to configure your controllers with annotations", 1170 | "keywords": [ 1171 | "annotations", 1172 | "controllers" 1173 | ], 1174 | "time": "2015-10-28 15:47:04" 1175 | }, 1176 | { 1177 | "name": "sensiolabs/security-checker", 1178 | "version": "v3.0.2", 1179 | "source": { 1180 | "type": "git", 1181 | "url": "https://github.com/sensiolabs/security-checker.git", 1182 | "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93" 1183 | }, 1184 | "dist": { 1185 | "type": "zip", 1186 | "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/21696b0daa731064c23cfb694c60a2584a7b6e93", 1187 | "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93", 1188 | "shasum": "" 1189 | }, 1190 | "require": { 1191 | "symfony/console": "~2.0|~3.0" 1192 | }, 1193 | "bin": [ 1194 | "security-checker" 1195 | ], 1196 | "type": "library", 1197 | "extra": { 1198 | "branch-alias": { 1199 | "dev-master": "3.0-dev" 1200 | } 1201 | }, 1202 | "autoload": { 1203 | "psr-0": { 1204 | "SensioLabs\\Security": "" 1205 | } 1206 | }, 1207 | "notification-url": "https://packagist.org/downloads/", 1208 | "license": [ 1209 | "MIT" 1210 | ], 1211 | "authors": [ 1212 | { 1213 | "name": "Fabien Potencier", 1214 | "email": "fabien.potencier@gmail.com" 1215 | } 1216 | ], 1217 | "description": "A security checker for your composer.lock", 1218 | "time": "2015-11-07 08:07:40" 1219 | }, 1220 | { 1221 | "name": "swiftmailer/swiftmailer", 1222 | "version": "v5.4.1", 1223 | "source": { 1224 | "type": "git", 1225 | "url": "https://github.com/swiftmailer/swiftmailer.git", 1226 | "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421" 1227 | }, 1228 | "dist": { 1229 | "type": "zip", 1230 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/0697e6aa65c83edf97bb0f23d8763f94e3f11421", 1231 | "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421", 1232 | "shasum": "" 1233 | }, 1234 | "require": { 1235 | "php": ">=5.3.3" 1236 | }, 1237 | "require-dev": { 1238 | "mockery/mockery": "~0.9.1,<0.9.4" 1239 | }, 1240 | "type": "library", 1241 | "extra": { 1242 | "branch-alias": { 1243 | "dev-master": "5.4-dev" 1244 | } 1245 | }, 1246 | "autoload": { 1247 | "files": [ 1248 | "lib/swift_required.php" 1249 | ] 1250 | }, 1251 | "notification-url": "https://packagist.org/downloads/", 1252 | "license": [ 1253 | "MIT" 1254 | ], 1255 | "authors": [ 1256 | { 1257 | "name": "Chris Corbyn" 1258 | }, 1259 | { 1260 | "name": "Fabien Potencier", 1261 | "email": "fabien@symfony.com" 1262 | } 1263 | ], 1264 | "description": "Swiftmailer, free feature-rich PHP mailer", 1265 | "homepage": "http://swiftmailer.org", 1266 | "keywords": [ 1267 | "email", 1268 | "mail", 1269 | "mailer" 1270 | ], 1271 | "time": "2015-06-06 14:19:39" 1272 | }, 1273 | { 1274 | "name": "symfony/monolog-bundle", 1275 | "version": "v2.8.2", 1276 | "source": { 1277 | "type": "git", 1278 | "url": "https://github.com/symfony/monolog-bundle.git", 1279 | "reference": "84785c4d44801c4dd82829fa2e1820cacfe2c46f" 1280 | }, 1281 | "dist": { 1282 | "type": "zip", 1283 | "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/84785c4d44801c4dd82829fa2e1820cacfe2c46f", 1284 | "reference": "84785c4d44801c4dd82829fa2e1820cacfe2c46f", 1285 | "shasum": "" 1286 | }, 1287 | "require": { 1288 | "monolog/monolog": "~1.8", 1289 | "php": ">=5.3.2", 1290 | "symfony/config": "~2.3|~3.0", 1291 | "symfony/dependency-injection": "~2.3|~3.0", 1292 | "symfony/http-kernel": "~2.3|~3.0", 1293 | "symfony/monolog-bridge": "~2.3|~3.0" 1294 | }, 1295 | "require-dev": { 1296 | "symfony/console": "~2.3|~3.0", 1297 | "symfony/yaml": "~2.3|~3.0" 1298 | }, 1299 | "type": "symfony-bundle", 1300 | "extra": { 1301 | "branch-alias": { 1302 | "dev-master": "2.8.x-dev" 1303 | } 1304 | }, 1305 | "autoload": { 1306 | "psr-4": { 1307 | "Symfony\\Bundle\\MonologBundle\\": "" 1308 | } 1309 | }, 1310 | "notification-url": "https://packagist.org/downloads/", 1311 | "license": [ 1312 | "MIT" 1313 | ], 1314 | "authors": [ 1315 | { 1316 | "name": "Symfony Community", 1317 | "homepage": "http://symfony.com/contributors" 1318 | }, 1319 | { 1320 | "name": "Fabien Potencier", 1321 | "email": "fabien@symfony.com" 1322 | } 1323 | ], 1324 | "description": "Symfony MonologBundle", 1325 | "homepage": "http://symfony.com", 1326 | "keywords": [ 1327 | "log", 1328 | "logging" 1329 | ], 1330 | "time": "2015-11-17 10:02:29" 1331 | }, 1332 | { 1333 | "name": "symfony/polyfill-intl-icu", 1334 | "version": "v1.0.0", 1335 | "source": { 1336 | "type": "git", 1337 | "url": "https://github.com/symfony/polyfill-intl-icu.git", 1338 | "reference": "2deb44160e1c886241c06602b12b98779f728177" 1339 | }, 1340 | "dist": { 1341 | "type": "zip", 1342 | "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/2deb44160e1c886241c06602b12b98779f728177", 1343 | "reference": "2deb44160e1c886241c06602b12b98779f728177", 1344 | "shasum": "" 1345 | }, 1346 | "require": { 1347 | "php": ">=5.3.3", 1348 | "symfony/intl": "~2.3|~3.0" 1349 | }, 1350 | "type": "library", 1351 | "extra": { 1352 | "branch-alias": { 1353 | "dev-master": "1.0-dev" 1354 | } 1355 | }, 1356 | "autoload": { 1357 | "files": [ 1358 | "bootstrap.php" 1359 | ] 1360 | }, 1361 | "notification-url": "https://packagist.org/downloads/", 1362 | "license": [ 1363 | "MIT" 1364 | ], 1365 | "authors": [ 1366 | { 1367 | "name": "Nicolas Grekas", 1368 | "email": "p@tchwork.com" 1369 | }, 1370 | { 1371 | "name": "Symfony Community", 1372 | "homepage": "https://symfony.com/contributors" 1373 | } 1374 | ], 1375 | "description": "Symfony polyfill for intl's ICU-related data and classes", 1376 | "homepage": "https://symfony.com", 1377 | "keywords": [ 1378 | "compatibility", 1379 | "icu", 1380 | "intl", 1381 | "polyfill", 1382 | "portable", 1383 | "shim" 1384 | ], 1385 | "time": "2015-11-04 20:28:58" 1386 | }, 1387 | { 1388 | "name": "symfony/polyfill-mbstring", 1389 | "version": "v1.0.0", 1390 | "source": { 1391 | "type": "git", 1392 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1393 | "reference": "0b6a8940385311a24e060ec1fe35680e17c74497" 1394 | }, 1395 | "dist": { 1396 | "type": "zip", 1397 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0b6a8940385311a24e060ec1fe35680e17c74497", 1398 | "reference": "0b6a8940385311a24e060ec1fe35680e17c74497", 1399 | "shasum": "" 1400 | }, 1401 | "require": { 1402 | "php": ">=5.3.3" 1403 | }, 1404 | "type": "library", 1405 | "extra": { 1406 | "branch-alias": { 1407 | "dev-master": "1.0-dev" 1408 | } 1409 | }, 1410 | "autoload": { 1411 | "psr-4": { 1412 | "Symfony\\Polyfill\\Mbstring\\": "" 1413 | }, 1414 | "files": [ 1415 | "bootstrap.php" 1416 | ] 1417 | }, 1418 | "notification-url": "https://packagist.org/downloads/", 1419 | "license": [ 1420 | "MIT" 1421 | ], 1422 | "authors": [ 1423 | { 1424 | "name": "Nicolas Grekas", 1425 | "email": "p@tchwork.com" 1426 | }, 1427 | { 1428 | "name": "Symfony Community", 1429 | "homepage": "https://symfony.com/contributors" 1430 | } 1431 | ], 1432 | "description": "Symfony polyfill for the Mbstring extension", 1433 | "homepage": "https://symfony.com", 1434 | "keywords": [ 1435 | "compatibility", 1436 | "mbstring", 1437 | "polyfill", 1438 | "portable", 1439 | "shim" 1440 | ], 1441 | "time": "2015-11-04 20:28:58" 1442 | }, 1443 | { 1444 | "name": "symfony/polyfill-php56", 1445 | "version": "v1.0.0", 1446 | "source": { 1447 | "type": "git", 1448 | "url": "https://github.com/symfony/polyfill-php56.git", 1449 | "reference": "a6bd4770a6967517e6610529e14afaa3111094a3" 1450 | }, 1451 | "dist": { 1452 | "type": "zip", 1453 | "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/a6bd4770a6967517e6610529e14afaa3111094a3", 1454 | "reference": "a6bd4770a6967517e6610529e14afaa3111094a3", 1455 | "shasum": "" 1456 | }, 1457 | "require": { 1458 | "php": ">=5.3.3", 1459 | "symfony/polyfill-util": "~1.0" 1460 | }, 1461 | "type": "library", 1462 | "extra": { 1463 | "branch-alias": { 1464 | "dev-master": "1.0-dev" 1465 | } 1466 | }, 1467 | "autoload": { 1468 | "psr-4": { 1469 | "Symfony\\Polyfill\\Php56\\": "" 1470 | }, 1471 | "files": [ 1472 | "bootstrap.php" 1473 | ] 1474 | }, 1475 | "notification-url": "https://packagist.org/downloads/", 1476 | "license": [ 1477 | "MIT" 1478 | ], 1479 | "authors": [ 1480 | { 1481 | "name": "Nicolas Grekas", 1482 | "email": "p@tchwork.com" 1483 | }, 1484 | { 1485 | "name": "Symfony Community", 1486 | "homepage": "https://symfony.com/contributors" 1487 | } 1488 | ], 1489 | "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", 1490 | "homepage": "https://symfony.com", 1491 | "keywords": [ 1492 | "compatibility", 1493 | "polyfill", 1494 | "portable", 1495 | "shim" 1496 | ], 1497 | "time": "2015-11-04 20:28:58" 1498 | }, 1499 | { 1500 | "name": "symfony/polyfill-php70", 1501 | "version": "v1.0.0", 1502 | "source": { 1503 | "type": "git", 1504 | "url": "https://github.com/symfony/polyfill-php70.git", 1505 | "reference": "7f7f3c9c2b9f17722e0cd64fdb4f957330c53146" 1506 | }, 1507 | "dist": { 1508 | "type": "zip", 1509 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/7f7f3c9c2b9f17722e0cd64fdb4f957330c53146", 1510 | "reference": "7f7f3c9c2b9f17722e0cd64fdb4f957330c53146", 1511 | "shasum": "" 1512 | }, 1513 | "require": { 1514 | "paragonie/random_compat": "~1.0", 1515 | "php": ">=5.3.3" 1516 | }, 1517 | "type": "library", 1518 | "extra": { 1519 | "branch-alias": { 1520 | "dev-master": "1.0-dev" 1521 | } 1522 | }, 1523 | "autoload": { 1524 | "psr-4": { 1525 | "Symfony\\Polyfill\\Php70\\": "" 1526 | }, 1527 | "files": [ 1528 | "bootstrap.php" 1529 | ], 1530 | "classmap": [ 1531 | "Resources/stubs" 1532 | ] 1533 | }, 1534 | "notification-url": "https://packagist.org/downloads/", 1535 | "license": [ 1536 | "MIT" 1537 | ], 1538 | "authors": [ 1539 | { 1540 | "name": "Nicolas Grekas", 1541 | "email": "p@tchwork.com" 1542 | }, 1543 | { 1544 | "name": "Symfony Community", 1545 | "homepage": "https://symfony.com/contributors" 1546 | } 1547 | ], 1548 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", 1549 | "homepage": "https://symfony.com", 1550 | "keywords": [ 1551 | "compatibility", 1552 | "polyfill", 1553 | "portable", 1554 | "shim" 1555 | ], 1556 | "time": "2015-11-04 20:28:58" 1557 | }, 1558 | { 1559 | "name": "symfony/polyfill-util", 1560 | "version": "v1.0.0", 1561 | "source": { 1562 | "type": "git", 1563 | "url": "https://github.com/symfony/polyfill-util.git", 1564 | "reference": "4271c55cbc0a77b2641f861b978123e46b3da969" 1565 | }, 1566 | "dist": { 1567 | "type": "zip", 1568 | "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4271c55cbc0a77b2641f861b978123e46b3da969", 1569 | "reference": "4271c55cbc0a77b2641f861b978123e46b3da969", 1570 | "shasum": "" 1571 | }, 1572 | "require": { 1573 | "php": ">=5.3.3" 1574 | }, 1575 | "type": "library", 1576 | "extra": { 1577 | "branch-alias": { 1578 | "dev-master": "1.0-dev" 1579 | } 1580 | }, 1581 | "autoload": { 1582 | "psr-4": { 1583 | "Symfony\\Polyfill\\Util\\": "" 1584 | } 1585 | }, 1586 | "notification-url": "https://packagist.org/downloads/", 1587 | "license": [ 1588 | "MIT" 1589 | ], 1590 | "authors": [ 1591 | { 1592 | "name": "Nicolas Grekas", 1593 | "email": "p@tchwork.com" 1594 | }, 1595 | { 1596 | "name": "Symfony Community", 1597 | "homepage": "https://symfony.com/contributors" 1598 | } 1599 | ], 1600 | "description": "Symfony utilities for portability of PHP codes", 1601 | "homepage": "https://symfony.com", 1602 | "keywords": [ 1603 | "compat", 1604 | "compatibility", 1605 | "polyfill", 1606 | "shim" 1607 | ], 1608 | "time": "2015-11-04 20:28:58" 1609 | }, 1610 | { 1611 | "name": "symfony/swiftmailer-bundle", 1612 | "version": "v2.3.9", 1613 | "source": { 1614 | "type": "git", 1615 | "url": "https://github.com/symfony/swiftmailer-bundle.git", 1616 | "reference": "3d21ada19f23631f558ad6df653b168e35362e78" 1617 | }, 1618 | "dist": { 1619 | "type": "zip", 1620 | "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/3d21ada19f23631f558ad6df653b168e35362e78", 1621 | "reference": "3d21ada19f23631f558ad6df653b168e35362e78", 1622 | "shasum": "" 1623 | }, 1624 | "require": { 1625 | "php": ">=5.3.2", 1626 | "swiftmailer/swiftmailer": ">=4.2.0,~5.0", 1627 | "symfony/config": "~2.3|~3.0", 1628 | "symfony/dependency-injection": "~2.3|~3.0", 1629 | "symfony/http-kernel": "~2.3|~3.0", 1630 | "symfony/yaml": "~2.3|~3.0" 1631 | }, 1632 | "require-dev": { 1633 | "symfony/phpunit-bridge": "~2.7|~3.0" 1634 | }, 1635 | "suggest": { 1636 | "psr/log": "Allows logging" 1637 | }, 1638 | "type": "symfony-bundle", 1639 | "extra": { 1640 | "branch-alias": { 1641 | "dev-master": "2.3-dev" 1642 | } 1643 | }, 1644 | "autoload": { 1645 | "psr-4": { 1646 | "Symfony\\Bundle\\SwiftmailerBundle\\": "" 1647 | } 1648 | }, 1649 | "notification-url": "https://packagist.org/downloads/", 1650 | "license": [ 1651 | "MIT" 1652 | ], 1653 | "authors": [ 1654 | { 1655 | "name": "Symfony Community", 1656 | "homepage": "http://symfony.com/contributors" 1657 | }, 1658 | { 1659 | "name": "Fabien Potencier", 1660 | "email": "fabien@symfony.com" 1661 | } 1662 | ], 1663 | "description": "Symfony SwiftmailerBundle", 1664 | "homepage": "http://symfony.com", 1665 | "time": "2015-11-28 10:59:29" 1666 | }, 1667 | { 1668 | "name": "symfony/symfony", 1669 | "version": "v3.0.0", 1670 | "source": { 1671 | "type": "git", 1672 | "url": "https://github.com/symfony/symfony.git", 1673 | "reference": "eb2a4f5f7a09fc4ce7a74ae883a8cf8a279614f5" 1674 | }, 1675 | "dist": { 1676 | "type": "zip", 1677 | "url": "https://api.github.com/repos/symfony/symfony/zipball/eb2a4f5f7a09fc4ce7a74ae883a8cf8a279614f5", 1678 | "reference": "eb2a4f5f7a09fc4ce7a74ae883a8cf8a279614f5", 1679 | "shasum": "" 1680 | }, 1681 | "require": { 1682 | "doctrine/common": "~2.4", 1683 | "php": ">=5.5.9", 1684 | "psr/log": "~1.0", 1685 | "symfony/polyfill-intl-icu": "~1.0", 1686 | "symfony/polyfill-mbstring": "~1.0", 1687 | "symfony/polyfill-php56": "~1.0", 1688 | "symfony/polyfill-php70": "~1.0", 1689 | "symfony/polyfill-util": "~1.0", 1690 | "twig/twig": "~1.23|~2.0" 1691 | }, 1692 | "conflict": { 1693 | "phpdocumentor/reflection": "<1.0.7" 1694 | }, 1695 | "replace": { 1696 | "symfony/asset": "self.version", 1697 | "symfony/browser-kit": "self.version", 1698 | "symfony/class-loader": "self.version", 1699 | "symfony/config": "self.version", 1700 | "symfony/console": "self.version", 1701 | "symfony/css-selector": "self.version", 1702 | "symfony/debug": "self.version", 1703 | "symfony/debug-bundle": "self.version", 1704 | "symfony/dependency-injection": "self.version", 1705 | "symfony/doctrine-bridge": "self.version", 1706 | "symfony/dom-crawler": "self.version", 1707 | "symfony/event-dispatcher": "self.version", 1708 | "symfony/expression-language": "self.version", 1709 | "symfony/filesystem": "self.version", 1710 | "symfony/finder": "self.version", 1711 | "symfony/form": "self.version", 1712 | "symfony/framework-bundle": "self.version", 1713 | "symfony/http-foundation": "self.version", 1714 | "symfony/http-kernel": "self.version", 1715 | "symfony/intl": "self.version", 1716 | "symfony/ldap": "self.version", 1717 | "symfony/monolog-bridge": "self.version", 1718 | "symfony/options-resolver": "self.version", 1719 | "symfony/process": "self.version", 1720 | "symfony/property-access": "self.version", 1721 | "symfony/property-info": "self.version", 1722 | "symfony/proxy-manager-bridge": "self.version", 1723 | "symfony/routing": "self.version", 1724 | "symfony/security": "self.version", 1725 | "symfony/security-bundle": "self.version", 1726 | "symfony/security-core": "self.version", 1727 | "symfony/security-csrf": "self.version", 1728 | "symfony/security-guard": "self.version", 1729 | "symfony/security-http": "self.version", 1730 | "symfony/serializer": "self.version", 1731 | "symfony/stopwatch": "self.version", 1732 | "symfony/templating": "self.version", 1733 | "symfony/translation": "self.version", 1734 | "symfony/twig-bridge": "self.version", 1735 | "symfony/twig-bundle": "self.version", 1736 | "symfony/validator": "self.version", 1737 | "symfony/var-dumper": "self.version", 1738 | "symfony/web-profiler-bundle": "self.version", 1739 | "symfony/yaml": "self.version" 1740 | }, 1741 | "require-dev": { 1742 | "doctrine/data-fixtures": "1.0.*", 1743 | "doctrine/dbal": "~2.4", 1744 | "doctrine/doctrine-bundle": "~1.4", 1745 | "doctrine/orm": "~2.4,>=2.4.5", 1746 | "egulias/email-validator": "~1.2", 1747 | "monolog/monolog": "~1.11", 1748 | "ocramius/proxy-manager": "~0.4|~1.0", 1749 | "phpdocumentor/reflection": "^1.0.7", 1750 | "symfony/security-acl": "~2.8|~3.0" 1751 | }, 1752 | "type": "library", 1753 | "extra": { 1754 | "branch-alias": { 1755 | "dev-master": "3.0-dev" 1756 | } 1757 | }, 1758 | "autoload": { 1759 | "psr-4": { 1760 | "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", 1761 | "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", 1762 | "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", 1763 | "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/", 1764 | "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", 1765 | "Symfony\\Bundle\\": "src/Symfony/Bundle/", 1766 | "Symfony\\Component\\": "src/Symfony/Component/" 1767 | }, 1768 | "classmap": [ 1769 | "src/Symfony/Component/Intl/Resources/stubs" 1770 | ], 1771 | "exclude-from-classmap": [ 1772 | "**/Tests/" 1773 | ] 1774 | }, 1775 | "notification-url": "https://packagist.org/downloads/", 1776 | "license": [ 1777 | "MIT" 1778 | ], 1779 | "authors": [ 1780 | { 1781 | "name": "Fabien Potencier", 1782 | "email": "fabien@symfony.com" 1783 | }, 1784 | { 1785 | "name": "Symfony Community", 1786 | "homepage": "https://symfony.com/contributors" 1787 | } 1788 | ], 1789 | "description": "The Symfony PHP framework", 1790 | "homepage": "https://symfony.com", 1791 | "keywords": [ 1792 | "framework" 1793 | ], 1794 | "time": "2015-11-30 20:59:43" 1795 | }, 1796 | { 1797 | "name": "twig/twig", 1798 | "version": "v1.23.1", 1799 | "source": { 1800 | "type": "git", 1801 | "url": "https://github.com/twigphp/Twig.git", 1802 | "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6" 1803 | }, 1804 | "dist": { 1805 | "type": "zip", 1806 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/d9b6333ae8dd2c8e3fd256e127548def0bc614c6", 1807 | "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6", 1808 | "shasum": "" 1809 | }, 1810 | "require": { 1811 | "php": ">=5.2.7" 1812 | }, 1813 | "require-dev": { 1814 | "symfony/debug": "~2.7", 1815 | "symfony/phpunit-bridge": "~2.7" 1816 | }, 1817 | "type": "library", 1818 | "extra": { 1819 | "branch-alias": { 1820 | "dev-master": "1.23-dev" 1821 | } 1822 | }, 1823 | "autoload": { 1824 | "psr-0": { 1825 | "Twig_": "lib/" 1826 | } 1827 | }, 1828 | "notification-url": "https://packagist.org/downloads/", 1829 | "license": [ 1830 | "BSD-3-Clause" 1831 | ], 1832 | "authors": [ 1833 | { 1834 | "name": "Fabien Potencier", 1835 | "email": "fabien@symfony.com", 1836 | "homepage": "http://fabien.potencier.org", 1837 | "role": "Lead Developer" 1838 | }, 1839 | { 1840 | "name": "Armin Ronacher", 1841 | "email": "armin.ronacher@active-4.com", 1842 | "role": "Project Founder" 1843 | }, 1844 | { 1845 | "name": "Twig Team", 1846 | "homepage": "http://twig.sensiolabs.org/contributors", 1847 | "role": "Contributors" 1848 | } 1849 | ], 1850 | "description": "Twig, the flexible, fast, and secure template language for PHP", 1851 | "homepage": "http://twig.sensiolabs.org", 1852 | "keywords": [ 1853 | "templating" 1854 | ], 1855 | "time": "2015-11-05 12:49:06" 1856 | } 1857 | ], 1858 | "packages-dev": [ 1859 | { 1860 | "name": "sensio/generator-bundle", 1861 | "version": "v3.0.0", 1862 | "source": { 1863 | "type": "git", 1864 | "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", 1865 | "reference": "f5f60fc84fdef91333c67f29b00a271cfbcf1ccb" 1866 | }, 1867 | "dist": { 1868 | "type": "zip", 1869 | "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/f5f60fc84fdef91333c67f29b00a271cfbcf1ccb", 1870 | "reference": "f5f60fc84fdef91333c67f29b00a271cfbcf1ccb", 1871 | "shasum": "" 1872 | }, 1873 | "require": { 1874 | "symfony/console": "~2.7|~3.0", 1875 | "symfony/framework-bundle": "~2.7|~3.0", 1876 | "symfony/process": "~2.7|~3.0", 1877 | "symfony/yaml": "~2.7|~3.0" 1878 | }, 1879 | "require-dev": { 1880 | "doctrine/orm": "~2.4", 1881 | "symfony/doctrine-bridge": "~2.7|~3.0", 1882 | "twig/twig": "~1.18" 1883 | }, 1884 | "type": "symfony-bundle", 1885 | "extra": { 1886 | "branch-alias": { 1887 | "dev-master": "3.0.x-dev" 1888 | } 1889 | }, 1890 | "autoload": { 1891 | "psr-4": { 1892 | "Sensio\\Bundle\\GeneratorBundle\\": "" 1893 | }, 1894 | "exclude-from-classmap": [ 1895 | "/Tests/" 1896 | ] 1897 | }, 1898 | "notification-url": "https://packagist.org/downloads/", 1899 | "license": [ 1900 | "MIT" 1901 | ], 1902 | "authors": [ 1903 | { 1904 | "name": "Fabien Potencier", 1905 | "email": "fabien@symfony.com" 1906 | } 1907 | ], 1908 | "description": "This bundle generates code for you", 1909 | "time": "2015-11-10 13:25:32" 1910 | }, 1911 | { 1912 | "name": "symfony/phpunit-bridge", 1913 | "version": "v2.8.0", 1914 | "source": { 1915 | "type": "git", 1916 | "url": "https://github.com/symfony/phpunit-bridge.git", 1917 | "reference": "fb79ac646c342fdff19864619943a6c58bb28893" 1918 | }, 1919 | "dist": { 1920 | "type": "zip", 1921 | "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/fb79ac646c342fdff19864619943a6c58bb28893", 1922 | "reference": "fb79ac646c342fdff19864619943a6c58bb28893", 1923 | "shasum": "" 1924 | }, 1925 | "require": { 1926 | "php": ">=5.3.3" 1927 | }, 1928 | "suggest": { 1929 | "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" 1930 | }, 1931 | "type": "symfony-bridge", 1932 | "extra": { 1933 | "branch-alias": { 1934 | "dev-master": "2.8-dev" 1935 | } 1936 | }, 1937 | "autoload": { 1938 | "files": [ 1939 | "bootstrap.php" 1940 | ], 1941 | "psr-4": { 1942 | "Symfony\\Bridge\\PhpUnit\\": "" 1943 | }, 1944 | "exclude-from-classmap": [ 1945 | "/Tests/" 1946 | ] 1947 | }, 1948 | "notification-url": "https://packagist.org/downloads/", 1949 | "license": [ 1950 | "MIT" 1951 | ], 1952 | "authors": [ 1953 | { 1954 | "name": "Nicolas Grekas", 1955 | "email": "p@tchwork.com" 1956 | }, 1957 | { 1958 | "name": "Symfony Community", 1959 | "homepage": "https://symfony.com/contributors" 1960 | } 1961 | ], 1962 | "description": "Symfony PHPUnit Bridge", 1963 | "homepage": "https://symfony.com", 1964 | "time": "2015-11-27 22:51:43" 1965 | } 1966 | ], 1967 | "aliases": [], 1968 | "minimum-stability": "stable", 1969 | "stability-flags": [], 1970 | "prefer-stable": false, 1971 | "prefer-lowest": false, 1972 | "platform": { 1973 | "php": ">=5.5.9" 1974 | }, 1975 | "platform-dev": [] 1976 | } 1977 | --------------------------------------------------------------------------------