├── .gitignore ├── src ├── ContextLogger │ ├── ContextLoggerAware.php │ └── ContextLoggerAwareTrait.php └── ContextLogger.php ├── .travis.yml ├── CHANGELOG.md ├── tests ├── ContextLogger │ └── ContextLoggerAwareTraitTest.php └── ContextLoggerTest.php ├── phpunit.xml ├── composer.json ├── LICENSE ├── README.md ├── .php_cs.dist └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | /.php_cs.cache 3 | -------------------------------------------------------------------------------- /src/ContextLogger/ContextLoggerAware.php: -------------------------------------------------------------------------------- 1 | logger = $logger; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 5.6 5 | - 7.0 6 | - 7.1 7 | - hhvm 8 | 9 | cache: 10 | directories: 11 | - $HOME/.composer/cache 12 | 13 | before_install: 14 | - composer self-update 15 | - composer validate 16 | 17 | install: 18 | - composer install --prefer-dist 19 | 20 | script: 21 | - vendor/bin/php-cs-fixer fix --dry-run 22 | - vendor/bin/phpunit 23 | 24 | matrix: 25 | fast_finish: true 26 | allow_failures: 27 | - php: hhvm 28 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to this project will be documented in this file. 3 | This project adheres to [Semantic Versioning](http://semver.org/). 4 | 5 | ## [1.1.0] - 2016-11-24 6 | ### Added 7 | * `TomPHP\ContextLogger\ContextLoggerAware` interface. 8 | * `TomPHP\ContextLogger\ContextLoggerAwareTrait` trait. 9 | 10 | ## [1.0.0] - 2016-11-20 11 | ### Added 12 | * `TomPHP\ContextLogger::addContext(string $name, $value)` 13 | * `TomPHP\ContextLogger::removeContext(string $name)` 14 | -------------------------------------------------------------------------------- /tests/ContextLogger/ContextLoggerAwareTraitTest.php: -------------------------------------------------------------------------------- 1 | prophesize(ContextLogger::class)->reveal(); 16 | 17 | $this->setLogger($logger); 18 | 19 | assertSame($logger, $this->logger); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | tests 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tomphp/context-logger", 3 | "description": "A PSR-3 compliant logger decorator which allows context metadata to be built up. ", 4 | "license": "MIT", 5 | "type": "library", 6 | "homepage": "https://github.com/tomphp/php-context-logger", 7 | "keywords": ["log", "logger", "psr3", "psr-3"], 8 | "authors": [ 9 | { 10 | "name": "Tom Oram", 11 | "email": "tom@x2k.co.uk", 12 | "homepage": "https://github.com/tomphp", 13 | "role": "Developer" 14 | } 15 | ], 16 | "require": { 17 | "php": "^5.6|^7.0", 18 | "psr/log": "^1.0" 19 | }, 20 | "require-dev": { 21 | "phpunit/phpunit": "^5.6", 22 | "friendsofphp/php-cs-fixer": "2.0.0-RC" 23 | }, 24 | "autoload": { 25 | "psr-4": { 26 | "TomPHP\\": "src/" 27 | } 28 | }, 29 | "autoload-dev": { 30 | "files": ["vendor/phpunit/phpunit/src/Framework/Assert/Functions.php"] 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Tom Oram 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Context Logger 2 | 3 | [![Build Status](https://travis-ci.org/tomphp/php-context-logger.svg?branch=master)](https://travis-ci.org/tomphp/php-context-logger) 4 | [![Latest Stable Version](https://poser.pugx.org/tomphp/context-logger/v/stable)](https://packagist.org/packages/tomphp/context-logger) 5 | [![Total Downloads](https://poser.pugx.org/tomphp/context-logger/downloads)](https://packagist.org/packages/tomphp/context-logger) 6 | [![Latest Unstable Version](https://poser.pugx.org/tomphp/context-logger/v/unstable)](https://packagist.org/packages/tomphp/context-logger) 7 | [![License](https://poser.pugx.org/tomphp/context-logger/license)](https://packagist.org/packages/tomphp/context-logger) 8 | 9 | A PSR-3 compliant logger decorator which allows context metadata to be built up. 10 | 11 | ## Installation 12 | 13 | ``` 14 | $ composer require tomphp/context-logger 15 | ``` 16 | 17 | ## Usage 18 | 19 | ```php 20 | pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); 28 | 29 | $log = new ContextLogger($monolog); 30 | 31 | $log->addContext('correlation_id', uniqid()); 32 | 33 | $log->error('There was an error'); 34 | ``` 35 | 36 | ### Setting the Context 37 | 38 | An original context can be set by providing an array as the second argument to 39 | the constructor: 40 | 41 | ```php 42 | $log = new ContextLogger($monolog, ['correlation_id' => uniqid()]); 43 | ``` 44 | 45 | The context can be added to or modified by the 46 | `addContext(string $name, $value)` method. 47 | 48 | The context can also be added to/modified by providing an array to the 49 | `$context` parameter of any of the PSR-3 `LoggerInterface` methods. 50 | 51 | ### Removing Context 52 | 53 | You can remove a item from the context by using the `removeContext(string $name)` 54 | method. 55 | -------------------------------------------------------------------------------- /src/ContextLogger.php: -------------------------------------------------------------------------------- 1 | logger = $logger; 22 | $this->context = $context; 23 | } 24 | 25 | /** 26 | * @param string $name 27 | * @param mixed $value 28 | * 29 | * @return void 30 | */ 31 | public function addContext($name, $value) 32 | { 33 | $this->context[$name] = $value; 34 | } 35 | 36 | /** 37 | * @param string $name 38 | * 39 | * @return void 40 | */ 41 | public function removeContext($name) 42 | { 43 | unset($this->context[$name]); 44 | } 45 | 46 | public function emergency($message, array $context = []) 47 | { 48 | $this->log('emergency', $message, $context); 49 | } 50 | 51 | public function alert($message, array $context = []) 52 | { 53 | $this->log('alert', $message, $context); 54 | } 55 | 56 | public function critical($message, array $context = []) 57 | { 58 | $this->log('critical', $message, $context); 59 | } 60 | 61 | public function error($message, array $context = []) 62 | { 63 | $this->log('error', $message, $context); 64 | } 65 | 66 | public function warning($message, array $context = []) 67 | { 68 | $this->log('warning', $message, $context); 69 | } 70 | 71 | public function notice($message, array $context = []) 72 | { 73 | $this->log('notice', $message, $context); 74 | } 75 | 76 | public function info($message, array $context = []) 77 | { 78 | $this->log('info', $message, $context); 79 | } 80 | 81 | public function debug($message, array $context = []) 82 | { 83 | $this->log('debug', $message, $context); 84 | } 85 | 86 | public function log($level, $message, array $context = []) 87 | { 88 | $this->logger->log($level, $message, array_merge($this->context, $context)); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /tests/ContextLoggerTest.php: -------------------------------------------------------------------------------- 1 | psrLogger = $this->prophesize(LoggerInterface::class); 20 | $this->logger = new ContextLogger($this->psrLogger->reveal()); 21 | } 22 | 23 | /** @test */ 24 | public function it_is_a_PSR7_logger() 25 | { 26 | assertInstanceOf(LoggerInterface::class, $this->logger); 27 | } 28 | 29 | /** 30 | * @test 31 | * 32 | * @dataProvider logLevels 33 | */ 34 | public function the_context_can_be_set_by_the_constructor($level, $method, array $args) 35 | { 36 | $context = ['correlation_id' => uniqid(), 'user_id' => uniqid()]; 37 | $logger = new ContextLogger($this->psrLogger->reveal(), $context); 38 | 39 | array_push($args, 'Example message'); 40 | $logger->$method(...$args); 41 | 42 | $this->psrLogger 43 | ->log($level, 'Example message', $context) 44 | ->shouldHaveBeenCalled(); 45 | } 46 | 47 | /** 48 | * @test 49 | * 50 | * @dataProvider logLevels 51 | */ 52 | public function on_add_context_it_adds_metadata_to_the_message($level, $method, array $args) 53 | { 54 | $correlationId = uniqid(); 55 | $userId = uniqid(); 56 | 57 | $this->logger->addContext('correlation_id', $correlationId); 58 | $this->logger->addContext('user_id', $userId); 59 | 60 | array_push($args, 'Example message'); 61 | $this->logger->$method(...$args); 62 | 63 | $this->psrLogger 64 | ->log($level, 'Example message', ['correlation_id' => $correlationId, 'user_id' => $userId]) 65 | ->shouldHaveBeenCalled(); 66 | } 67 | 68 | /** 69 | * @test 70 | * 71 | * @dataProvider logLevels 72 | */ 73 | public function added_context_overrides_constructor_context($level, $method, array $args) 74 | { 75 | $context = ['correlation_id' => 'example-id', 'user_id' => 'old-user-id']; 76 | $logger = new ContextLogger($this->psrLogger->reveal(), $context); 77 | 78 | $logger->addContext('user_id', 'new-user-id'); 79 | 80 | array_push($args, 'Example message'); 81 | $logger->$method(...$args); 82 | 83 | $this->psrLogger 84 | ->log($level, 'Example message', ['correlation_id' => 'example-id', 'user_id' => 'new-user-id']) 85 | ->shouldHaveBeenCalled(); 86 | } 87 | 88 | /** 89 | * @test 90 | * 91 | * @dataProvider logLevels 92 | */ 93 | public function method_context_overrides_added_context($level, $method, array $args) 94 | { 95 | $this->logger->addContext('correlation_id', 'example-id'); 96 | $this->logger->addContext('user_id', 'old-user-id'); 97 | 98 | array_push($args, 'Example message'); 99 | array_push($args, ['user_id' => 'new-user-id']); 100 | $this->logger->$method(...$args); 101 | 102 | $this->psrLogger 103 | ->log($level, 'Example message', ['correlation_id' => 'example-id', 'user_id' => 'new-user-id']) 104 | ->shouldHaveBeenCalled(); 105 | } 106 | 107 | /** 108 | * @test 109 | * 110 | * @dataProvider logLevels 111 | */ 112 | public function on_removeContext_it_removes_context_by_key($level, $method, array $args) 113 | { 114 | $this->logger->addContext('correlation_id', 'example-id'); 115 | $this->logger->addContext('user_id', 'old-user-id'); 116 | 117 | $this->logger->removeContext('user_id'); 118 | 119 | array_push($args, 'Example message'); 120 | $this->logger->$method(...$args); 121 | 122 | $this->psrLogger 123 | ->log($level, 'Example message', ['correlation_id' => 'example-id']) 124 | ->shouldHaveBeenCalled(); 125 | } 126 | 127 | public function logLevels() 128 | { 129 | return [ 130 | ['emergency', 'emergency', []], 131 | ['alert', 'alert', []], 132 | ['critical', 'critical', []], 133 | ['error', 'error', []], 134 | ['warning', 'warning', []], 135 | ['notice', 'notice', []], 136 | ['info', 'info', []], 137 | ['debug', 'debug', []], 138 | ['emergency', 'log', ['emergency']], 139 | ['alert', 'log', ['alert']], 140 | ['critical', 'log', ['critical']], 141 | ['error', 'log', ['error']], 142 | ['warning', 'log', ['warning']], 143 | ['notice', 'log', ['notice']], 144 | ['info', 'log', ['info']], 145 | ['debug', 'log', ['debug']], 146 | ]; 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /.php_cs.dist: -------------------------------------------------------------------------------- 1 | in(__DIR__ . '/src') 5 | ->in(__DIR__ . '/tests'); 6 | 7 | return PhpCsFixer\Config::create() 8 | ->setRules([ 9 | //'@PSR2' => true, 10 | 'array_syntax' => [ 11 | 'syntax' => 'short', 12 | ], 13 | 'binary_operator_spaces' => [ 14 | 'align_equals' => true, 15 | 'align_double_arrow' => true, 16 | ], 17 | 'blank_line_after_namespace' => true, // [@PSR2, @Symfony] 18 | 'blank_line_after_opening_tag' => false, // [@Symfony] 19 | 'blank_line_before_return' => false, // [@Symfony] 20 | 'braces' => true, // [@PSR2, @Symfony] 21 | 'cast_spaces' => true, // [@Symfony] 22 | 'class_definition' => [ 23 | 'singleLine' => true, 24 | 'singleItemSingleLine' => false, 25 | 'multiLineExtendsEachSingleLine' => true, 26 | ], 27 | 'class_keyword_remove' => false, 28 | 'combine_consecutive_unsets' => false, 29 | 'concat_with_spaces' => true, 30 | 'concat_without_spaces' => false, // [@Symfony] 31 | 'declare_equal_normalize' => true, // [@Symfony] 32 | 'declare_strict_types' => false, 33 | 'dir_constant' => true, 34 | 'echo_to_print' => true, 35 | 'elseif' => true, // [@PSR2, @Symfony] 36 | 'encoding' => true, // [@PSR1, @PSR2, @Symfony] 37 | 'ereg_to_preg' => true, 38 | 'full_opening_tag' => true, // [@PSR1, @PSR2, @Symfony] 39 | 'function_declaration' => true, // [@PSR2, @Symfony] 40 | 'function_typehint_space' => true, // [@Symfony] 41 | 'general_phpdoc_annotation_remove' => false, 42 | 'general_phpdoc_annotation_rename' => false, 43 | 'hash_to_slash_comment' => true, // [@Symfony] 44 | 'header_comment' => false, 45 | 'heredoc_to_nowdoc' => true, // [@Symfony] 46 | 'include' => true, // [@Symfony] 47 | 'indentation_type' => true, // [@PSR2, @Symfony] 48 | 'line_ending' => true, // [@PSR2, @Symfony] 49 | // 'linebreak_after_opening_tag' => true, 50 | 'lowercase_cast' => true, // [@Symfony] 51 | 'lowercase_constants' => true, // [@PSR2, @Symfony] 52 | 'lowercase_keywords' => true, // [@PSR2, @Symfony] 53 | 'mb_str_functions' => true, 54 | 'method_argument_space' => true, // [@PSR2, @Symfony] 55 | 'method_separation' => true, // [@Symfony] 56 | 'modernize_types_casting' => true, 57 | 'native_function_casing' => true, // [@Symfony] 58 | 'new_with_braces' => true, // [@Symfony] 59 | 'no_alias_functions' => true, // [@Symfony] 60 | 'no_blank_lines_after_class_opening' => true, // [@Symfony] 61 | 'no_blank_lines_after_phpdoc' => true, // [@Symfony] 62 | 'no_blank_lines_before_namespace' => false, 63 | 'no_closing_tag' => true, // [@PSR2, @Symfony] 64 | 'no_empty_comment' => true, // [@Symfony] 65 | 'no_empty_phpdoc' => true, // [@Symfony] 66 | 'no_empty_statement' => true, // [@Symfony] 67 | 'no_extra_consecutive_blank_lines' => true, // [@Symfony] 68 | 'no_leading_import_slash' => true, // [@Symfony] 69 | 'no_leading_namespace_whitespace' => true, // [@Symfony] 70 | 'no_multiline_whitespace_around_double_arrow' => true, // [@Symfony] 71 | 'no_multiline_whitespace_before_semicolons' => true, 72 | 'no_php4_constructor' => true, 73 | 'no_short_bool_cast' => true, // [@Symfony] 74 | 'no_short_echo_tag' => true, 75 | 'no_singleline_whitespace_before_semicolons' => true, // [@Symfony] 76 | 'no_spaces_after_function_name' => true, // [@PSR2, @Symfony] 77 | 'no_spaces_around_offset' => true, // [@Symfony] 78 | 'no_spaces_inside_parenthesis' => true, // [@PSR2, @Symfony] 79 | 'no_trailing_comma_in_list_call' => true, // [@Symfony] 80 | 'no_trailing_comma_in_singleline_array' => true, // [@Symfony] 81 | 'no_trailing_whitespace' => true, // [@PSR2, @Symfony] 82 | 'no_trailing_whitespace_in_comment' => true, // [@PSR2, @Symfony] 83 | 'no_unneeded_control_parentheses' => true, // [@Symfony] 84 | 'no_unreachable_default_argument_value' => true, // [@Symfony] 85 | 'no_unused_imports' => true, // [@Symfony] 86 | 'no_useless_else' => true, 87 | 'no_useless_return' => true, 88 | 'no_whitespace_before_comma_in_array' => true, // [@Symfony] 89 | 'no_whitespace_in_blank_line' => true, // [@Symfony] 90 | 'normalize_index_brace' => true, // [@Symfony] 91 | 'not_operator_with_space' => false, 92 | 'not_operator_with_successor_space' => false, 93 | 'object_operator_without_whitespace' => true, // [@Symfony] 94 | 'ordered_class_elements' => false, 95 | 'ordered_imports' => true, 96 | 'php_unit_construct' => true, // [@Symfony:risky] 97 | 'php_unit_dedicate_assert' => true, // [@Symfony:risky] 98 | 'php_unit_fqcn_annotation' => true, // [@Symfony] 99 | 'php_unit_strict' => true, 100 | 'phpdoc_align' => true, // [@Symfony] 101 | 'phpdoc_annotation_without_dot' => true, // [@Symfony] 102 | 'phpdoc_indent' => true, // [@Symfony] 103 | 'phpdoc_inline_tag' => true, // [@Symfony] 104 | 'phpdoc_no_access' => true, // [@Symfony] 105 | 'phpdoc_no_empty_return' => false, // [@Symfony] 106 | 'phpdoc_no_package' => true, // [@Symfony] 107 | 'phpdoc_order' => true, 108 | 'phpdoc_property' => true, 109 | 'phpdoc_scalar' => true, // [@Symfony] 110 | 'phpdoc_separation' => true, // [@Symfony] 111 | 'phpdoc_single_line_var_spacing' => true, // [@Symfony] 112 | 'phpdoc_summary' => true, // [@Symfony] 113 | 'phpdoc_to_comment' => true, // [@Symfony] 114 | 'phpdoc_trim' => true, // [@Symfony] 115 | 'phpdoc_type_to_var' => true, // [@Symfony] 116 | 'phpdoc_types' => true, // [@Symfony] 117 | 'phpdoc_var_to_type' => false, 118 | 'phpdoc_var_without_name' => true, // [@Symfony] 119 | 'pow_to_exponentiation' => true, // [@PHP56Migration, @PHP70Migration, @PHP71Migration] 120 | 'pre_increment' => true, // [@Symfony] 121 | 'print_to_echo' => false, // [@Symfony] 122 | 'protected_to_private' => false, 123 | 'psr0' => true, 124 | 'psr4' => true, 125 | 'random_api_migration' => true, // [@PHP70Migration, @PHP71Migration] 126 | 'return_type_declaration' => false, // [@Symfony] // <- Update me 127 | 'self_accessor' => true, // [@Symfony] 128 | 'semicolon_after_instruction' => true, 129 | 'short_scalar_cast' => true, // [@Symfony] 130 | 'silenced_deprecation_error' => false, // [@Symfony:risky] 131 | 'simplified_null_return' => false, 132 | 'single_blank_line_at_eof' => true, // [@PSR2, @Symfony] 133 | 'single_blank_line_before_namespace' => true, // [@Symfony] 134 | 'single_class_element_per_statement' => true, // [@PSR2, @Symfony] 135 | 'single_import_per_statement' => true, // [@PSR2, @Symfony] 136 | 'single_line_after_imports' => true, // [@PSR2, @Symfony] 137 | 'single_quote' => true, // [@Symfony] 138 | 'space_after_semicolon' => true, // [@Symfony] 139 | 'standardize_not_equals' => true, // [@Symfony] 140 | 'strict_comparison' => false, 141 | 'strict_param' => true, 142 | 'switch_case_semicolon_to_colon' => true, // [@PSR2, @Symfony] 143 | 'switch_case_space' => true, // [@PSR2, @Symfony] 144 | 'ternary_operator_spaces' => true, // [@Symfony] 145 | 'trailing_comma_in_multiline_array' => true, // [@Symfony] 146 | 'trim_array_spaces' => true, // [@Symfony] 147 | 'unary_operator_spaces' => true, // [@Symfony] 148 | 'visibility_required' => true, // [@PSR2, @Symfony, @PHP71Migration] 149 | 'whitespace_after_comma_in_array' => true, // [@Symfony] 150 | ]) 151 | ->setRiskyAllowed(true) 152 | ->setUsingCache(true) 153 | // ->setUsingLinter(true) 154 | ->setFinder($finder); 155 | -------------------------------------------------------------------------------- /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": "cc10f9ff877fd97315a8c18036f35bcc", 8 | "content-hash": "434816a3fc4a39396e4cd61c47848b47", 9 | "packages": [ 10 | { 11 | "name": "psr/log", 12 | "version": "1.0.2", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/php-fig/log.git", 16 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 21 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "php": ">=5.3.0" 26 | }, 27 | "type": "library", 28 | "extra": { 29 | "branch-alias": { 30 | "dev-master": "1.0.x-dev" 31 | } 32 | }, 33 | "autoload": { 34 | "psr-4": { 35 | "Psr\\Log\\": "Psr/Log/" 36 | } 37 | }, 38 | "notification-url": "https://packagist.org/downloads/", 39 | "license": [ 40 | "MIT" 41 | ], 42 | "authors": [ 43 | { 44 | "name": "PHP-FIG", 45 | "homepage": "http://www.php-fig.org/" 46 | } 47 | ], 48 | "description": "Common interface for logging libraries", 49 | "homepage": "https://github.com/php-fig/log", 50 | "keywords": [ 51 | "log", 52 | "psr", 53 | "psr-3" 54 | ], 55 | "time": "2016-10-10 12:19:37" 56 | } 57 | ], 58 | "packages-dev": [ 59 | { 60 | "name": "doctrine/instantiator", 61 | "version": "1.0.5", 62 | "source": { 63 | "type": "git", 64 | "url": "https://github.com/doctrine/instantiator.git", 65 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 66 | }, 67 | "dist": { 68 | "type": "zip", 69 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 70 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 71 | "shasum": "" 72 | }, 73 | "require": { 74 | "php": ">=5.3,<8.0-DEV" 75 | }, 76 | "require-dev": { 77 | "athletic/athletic": "~0.1.8", 78 | "ext-pdo": "*", 79 | "ext-phar": "*", 80 | "phpunit/phpunit": "~4.0", 81 | "squizlabs/php_codesniffer": "~2.0" 82 | }, 83 | "type": "library", 84 | "extra": { 85 | "branch-alias": { 86 | "dev-master": "1.0.x-dev" 87 | } 88 | }, 89 | "autoload": { 90 | "psr-4": { 91 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 92 | } 93 | }, 94 | "notification-url": "https://packagist.org/downloads/", 95 | "license": [ 96 | "MIT" 97 | ], 98 | "authors": [ 99 | { 100 | "name": "Marco Pivetta", 101 | "email": "ocramius@gmail.com", 102 | "homepage": "http://ocramius.github.com/" 103 | } 104 | ], 105 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 106 | "homepage": "https://github.com/doctrine/instantiator", 107 | "keywords": [ 108 | "constructor", 109 | "instantiate" 110 | ], 111 | "time": "2015-06-14 21:17:01" 112 | }, 113 | { 114 | "name": "friendsofphp/php-cs-fixer", 115 | "version": "v2.0.0-RC", 116 | "source": { 117 | "type": "git", 118 | "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", 119 | "reference": "f88ef17f44fa442e1dd98deb7da0d943be9c8fa8" 120 | }, 121 | "dist": { 122 | "type": "zip", 123 | "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/f88ef17f44fa442e1dd98deb7da0d943be9c8fa8", 124 | "reference": "f88ef17f44fa442e1dd98deb7da0d943be9c8fa8", 125 | "shasum": "" 126 | }, 127 | "require": { 128 | "ext-tokenizer": "*", 129 | "php": "^5.3.6 || >=7.0 <7.2", 130 | "sebastian/diff": "^1.1", 131 | "symfony/console": "^2.3 || ^3.0", 132 | "symfony/event-dispatcher": "^2.1 || ^3.0", 133 | "symfony/filesystem": "^2.4 || ^3.0", 134 | "symfony/finder": "^2.2 || ^3.0", 135 | "symfony/polyfill-php54": "^1.0", 136 | "symfony/process": "^2.3 || ^3.0", 137 | "symfony/stopwatch": "^2.5 || ^3.0" 138 | }, 139 | "conflict": { 140 | "hhvm": "<3.9" 141 | }, 142 | "require-dev": { 143 | "phpunit/phpunit": "^4.5|^5", 144 | "satooshi/php-coveralls": "^1.0" 145 | }, 146 | "bin": [ 147 | "php-cs-fixer" 148 | ], 149 | "type": "application", 150 | "extra": { 151 | "branch-alias": { 152 | "dev-master": "2.0-dev" 153 | } 154 | }, 155 | "autoload": { 156 | "psr-4": { 157 | "PhpCsFixer\\": "src/" 158 | } 159 | }, 160 | "notification-url": "https://packagist.org/downloads/", 161 | "license": [ 162 | "MIT" 163 | ], 164 | "authors": [ 165 | { 166 | "name": "Dariusz Rumiński", 167 | "email": "dariusz.ruminski@gmail.com" 168 | }, 169 | { 170 | "name": "Fabien Potencier", 171 | "email": "fabien@symfony.com" 172 | } 173 | ], 174 | "description": "A tool to automatically fix PHP code style", 175 | "time": "2016-11-12 22:43:36" 176 | }, 177 | { 178 | "name": "myclabs/deep-copy", 179 | "version": "1.5.5", 180 | "source": { 181 | "type": "git", 182 | "url": "https://github.com/myclabs/DeepCopy.git", 183 | "reference": "399c1f9781e222f6eb6cc238796f5200d1b7f108" 184 | }, 185 | "dist": { 186 | "type": "zip", 187 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/399c1f9781e222f6eb6cc238796f5200d1b7f108", 188 | "reference": "399c1f9781e222f6eb6cc238796f5200d1b7f108", 189 | "shasum": "" 190 | }, 191 | "require": { 192 | "php": ">=5.4.0" 193 | }, 194 | "require-dev": { 195 | "doctrine/collections": "1.*", 196 | "phpunit/phpunit": "~4.1" 197 | }, 198 | "type": "library", 199 | "autoload": { 200 | "psr-4": { 201 | "DeepCopy\\": "src/DeepCopy/" 202 | } 203 | }, 204 | "notification-url": "https://packagist.org/downloads/", 205 | "license": [ 206 | "MIT" 207 | ], 208 | "description": "Create deep copies (clones) of your objects", 209 | "homepage": "https://github.com/myclabs/DeepCopy", 210 | "keywords": [ 211 | "clone", 212 | "copy", 213 | "duplicate", 214 | "object", 215 | "object graph" 216 | ], 217 | "time": "2016-10-31 17:19:45" 218 | }, 219 | { 220 | "name": "phpdocumentor/reflection-common", 221 | "version": "1.0", 222 | "source": { 223 | "type": "git", 224 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 225 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" 226 | }, 227 | "dist": { 228 | "type": "zip", 229 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 230 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 231 | "shasum": "" 232 | }, 233 | "require": { 234 | "php": ">=5.5" 235 | }, 236 | "require-dev": { 237 | "phpunit/phpunit": "^4.6" 238 | }, 239 | "type": "library", 240 | "extra": { 241 | "branch-alias": { 242 | "dev-master": "1.0.x-dev" 243 | } 244 | }, 245 | "autoload": { 246 | "psr-4": { 247 | "phpDocumentor\\Reflection\\": [ 248 | "src" 249 | ] 250 | } 251 | }, 252 | "notification-url": "https://packagist.org/downloads/", 253 | "license": [ 254 | "MIT" 255 | ], 256 | "authors": [ 257 | { 258 | "name": "Jaap van Otterdijk", 259 | "email": "opensource@ijaap.nl" 260 | } 261 | ], 262 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 263 | "homepage": "http://www.phpdoc.org", 264 | "keywords": [ 265 | "FQSEN", 266 | "phpDocumentor", 267 | "phpdoc", 268 | "reflection", 269 | "static analysis" 270 | ], 271 | "time": "2015-12-27 11:43:31" 272 | }, 273 | { 274 | "name": "phpdocumentor/reflection-docblock", 275 | "version": "3.1.1", 276 | "source": { 277 | "type": "git", 278 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 279 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" 280 | }, 281 | "dist": { 282 | "type": "zip", 283 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", 284 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", 285 | "shasum": "" 286 | }, 287 | "require": { 288 | "php": ">=5.5", 289 | "phpdocumentor/reflection-common": "^1.0@dev", 290 | "phpdocumentor/type-resolver": "^0.2.0", 291 | "webmozart/assert": "^1.0" 292 | }, 293 | "require-dev": { 294 | "mockery/mockery": "^0.9.4", 295 | "phpunit/phpunit": "^4.4" 296 | }, 297 | "type": "library", 298 | "autoload": { 299 | "psr-4": { 300 | "phpDocumentor\\Reflection\\": [ 301 | "src/" 302 | ] 303 | } 304 | }, 305 | "notification-url": "https://packagist.org/downloads/", 306 | "license": [ 307 | "MIT" 308 | ], 309 | "authors": [ 310 | { 311 | "name": "Mike van Riel", 312 | "email": "me@mikevanriel.com" 313 | } 314 | ], 315 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 316 | "time": "2016-09-30 07:12:33" 317 | }, 318 | { 319 | "name": "phpdocumentor/type-resolver", 320 | "version": "0.2", 321 | "source": { 322 | "type": "git", 323 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 324 | "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" 325 | }, 326 | "dist": { 327 | "type": "zip", 328 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", 329 | "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", 330 | "shasum": "" 331 | }, 332 | "require": { 333 | "php": ">=5.5", 334 | "phpdocumentor/reflection-common": "^1.0" 335 | }, 336 | "require-dev": { 337 | "mockery/mockery": "^0.9.4", 338 | "phpunit/phpunit": "^5.2||^4.8.24" 339 | }, 340 | "type": "library", 341 | "extra": { 342 | "branch-alias": { 343 | "dev-master": "1.0.x-dev" 344 | } 345 | }, 346 | "autoload": { 347 | "psr-4": { 348 | "phpDocumentor\\Reflection\\": [ 349 | "src/" 350 | ] 351 | } 352 | }, 353 | "notification-url": "https://packagist.org/downloads/", 354 | "license": [ 355 | "MIT" 356 | ], 357 | "authors": [ 358 | { 359 | "name": "Mike van Riel", 360 | "email": "me@mikevanriel.com" 361 | } 362 | ], 363 | "time": "2016-06-10 07:14:17" 364 | }, 365 | { 366 | "name": "phpspec/prophecy", 367 | "version": "v1.6.1", 368 | "source": { 369 | "type": "git", 370 | "url": "https://github.com/phpspec/prophecy.git", 371 | "reference": "58a8137754bc24b25740d4281399a4a3596058e0" 372 | }, 373 | "dist": { 374 | "type": "zip", 375 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0", 376 | "reference": "58a8137754bc24b25740d4281399a4a3596058e0", 377 | "shasum": "" 378 | }, 379 | "require": { 380 | "doctrine/instantiator": "^1.0.2", 381 | "php": "^5.3|^7.0", 382 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", 383 | "sebastian/comparator": "^1.1", 384 | "sebastian/recursion-context": "^1.0" 385 | }, 386 | "require-dev": { 387 | "phpspec/phpspec": "^2.0" 388 | }, 389 | "type": "library", 390 | "extra": { 391 | "branch-alias": { 392 | "dev-master": "1.6.x-dev" 393 | } 394 | }, 395 | "autoload": { 396 | "psr-0": { 397 | "Prophecy\\": "src/" 398 | } 399 | }, 400 | "notification-url": "https://packagist.org/downloads/", 401 | "license": [ 402 | "MIT" 403 | ], 404 | "authors": [ 405 | { 406 | "name": "Konstantin Kudryashov", 407 | "email": "ever.zet@gmail.com", 408 | "homepage": "http://everzet.com" 409 | }, 410 | { 411 | "name": "Marcello Duarte", 412 | "email": "marcello.duarte@gmail.com" 413 | } 414 | ], 415 | "description": "Highly opinionated mocking framework for PHP 5.3+", 416 | "homepage": "https://github.com/phpspec/prophecy", 417 | "keywords": [ 418 | "Double", 419 | "Dummy", 420 | "fake", 421 | "mock", 422 | "spy", 423 | "stub" 424 | ], 425 | "time": "2016-06-07 08:13:47" 426 | }, 427 | { 428 | "name": "phpunit/php-code-coverage", 429 | "version": "4.0.2", 430 | "source": { 431 | "type": "git", 432 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 433 | "reference": "6cba06ff75a1a63a71033e1a01b89056f3af1e8d" 434 | }, 435 | "dist": { 436 | "type": "zip", 437 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6cba06ff75a1a63a71033e1a01b89056f3af1e8d", 438 | "reference": "6cba06ff75a1a63a71033e1a01b89056f3af1e8d", 439 | "shasum": "" 440 | }, 441 | "require": { 442 | "php": "^5.6 || ^7.0", 443 | "phpunit/php-file-iterator": "~1.3", 444 | "phpunit/php-text-template": "~1.2", 445 | "phpunit/php-token-stream": "^1.4.2", 446 | "sebastian/code-unit-reverse-lookup": "~1.0", 447 | "sebastian/environment": "^1.3.2 || ^2.0", 448 | "sebastian/version": "~1.0|~2.0" 449 | }, 450 | "require-dev": { 451 | "ext-xdebug": ">=2.1.4", 452 | "phpunit/phpunit": "^5.4" 453 | }, 454 | "suggest": { 455 | "ext-dom": "*", 456 | "ext-xdebug": ">=2.4.0", 457 | "ext-xmlwriter": "*" 458 | }, 459 | "type": "library", 460 | "extra": { 461 | "branch-alias": { 462 | "dev-master": "4.0.x-dev" 463 | } 464 | }, 465 | "autoload": { 466 | "classmap": [ 467 | "src/" 468 | ] 469 | }, 470 | "notification-url": "https://packagist.org/downloads/", 471 | "license": [ 472 | "BSD-3-Clause" 473 | ], 474 | "authors": [ 475 | { 476 | "name": "Sebastian Bergmann", 477 | "email": "sb@sebastian-bergmann.de", 478 | "role": "lead" 479 | } 480 | ], 481 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 482 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 483 | "keywords": [ 484 | "coverage", 485 | "testing", 486 | "xunit" 487 | ], 488 | "time": "2016-11-01 05:06:24" 489 | }, 490 | { 491 | "name": "phpunit/php-file-iterator", 492 | "version": "1.4.1", 493 | "source": { 494 | "type": "git", 495 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 496 | "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" 497 | }, 498 | "dist": { 499 | "type": "zip", 500 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", 501 | "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", 502 | "shasum": "" 503 | }, 504 | "require": { 505 | "php": ">=5.3.3" 506 | }, 507 | "type": "library", 508 | "extra": { 509 | "branch-alias": { 510 | "dev-master": "1.4.x-dev" 511 | } 512 | }, 513 | "autoload": { 514 | "classmap": [ 515 | "src/" 516 | ] 517 | }, 518 | "notification-url": "https://packagist.org/downloads/", 519 | "license": [ 520 | "BSD-3-Clause" 521 | ], 522 | "authors": [ 523 | { 524 | "name": "Sebastian Bergmann", 525 | "email": "sb@sebastian-bergmann.de", 526 | "role": "lead" 527 | } 528 | ], 529 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 530 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 531 | "keywords": [ 532 | "filesystem", 533 | "iterator" 534 | ], 535 | "time": "2015-06-21 13:08:43" 536 | }, 537 | { 538 | "name": "phpunit/php-text-template", 539 | "version": "1.2.1", 540 | "source": { 541 | "type": "git", 542 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 543 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 544 | }, 545 | "dist": { 546 | "type": "zip", 547 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 548 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 549 | "shasum": "" 550 | }, 551 | "require": { 552 | "php": ">=5.3.3" 553 | }, 554 | "type": "library", 555 | "autoload": { 556 | "classmap": [ 557 | "src/" 558 | ] 559 | }, 560 | "notification-url": "https://packagist.org/downloads/", 561 | "license": [ 562 | "BSD-3-Clause" 563 | ], 564 | "authors": [ 565 | { 566 | "name": "Sebastian Bergmann", 567 | "email": "sebastian@phpunit.de", 568 | "role": "lead" 569 | } 570 | ], 571 | "description": "Simple template engine.", 572 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 573 | "keywords": [ 574 | "template" 575 | ], 576 | "time": "2015-06-21 13:50:34" 577 | }, 578 | { 579 | "name": "phpunit/php-timer", 580 | "version": "1.0.8", 581 | "source": { 582 | "type": "git", 583 | "url": "https://github.com/sebastianbergmann/php-timer.git", 584 | "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" 585 | }, 586 | "dist": { 587 | "type": "zip", 588 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", 589 | "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", 590 | "shasum": "" 591 | }, 592 | "require": { 593 | "php": ">=5.3.3" 594 | }, 595 | "require-dev": { 596 | "phpunit/phpunit": "~4|~5" 597 | }, 598 | "type": "library", 599 | "autoload": { 600 | "classmap": [ 601 | "src/" 602 | ] 603 | }, 604 | "notification-url": "https://packagist.org/downloads/", 605 | "license": [ 606 | "BSD-3-Clause" 607 | ], 608 | "authors": [ 609 | { 610 | "name": "Sebastian Bergmann", 611 | "email": "sb@sebastian-bergmann.de", 612 | "role": "lead" 613 | } 614 | ], 615 | "description": "Utility class for timing", 616 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 617 | "keywords": [ 618 | "timer" 619 | ], 620 | "time": "2016-05-12 18:03:57" 621 | }, 622 | { 623 | "name": "phpunit/php-token-stream", 624 | "version": "1.4.9", 625 | "source": { 626 | "type": "git", 627 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 628 | "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b" 629 | }, 630 | "dist": { 631 | "type": "zip", 632 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b", 633 | "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b", 634 | "shasum": "" 635 | }, 636 | "require": { 637 | "ext-tokenizer": "*", 638 | "php": ">=5.3.3" 639 | }, 640 | "require-dev": { 641 | "phpunit/phpunit": "~4.2" 642 | }, 643 | "type": "library", 644 | "extra": { 645 | "branch-alias": { 646 | "dev-master": "1.4-dev" 647 | } 648 | }, 649 | "autoload": { 650 | "classmap": [ 651 | "src/" 652 | ] 653 | }, 654 | "notification-url": "https://packagist.org/downloads/", 655 | "license": [ 656 | "BSD-3-Clause" 657 | ], 658 | "authors": [ 659 | { 660 | "name": "Sebastian Bergmann", 661 | "email": "sebastian@phpunit.de" 662 | } 663 | ], 664 | "description": "Wrapper around PHP's tokenizer extension.", 665 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 666 | "keywords": [ 667 | "tokenizer" 668 | ], 669 | "time": "2016-11-15 14:06:22" 670 | }, 671 | { 672 | "name": "phpunit/phpunit", 673 | "version": "5.6.4", 674 | "source": { 675 | "type": "git", 676 | "url": "https://github.com/sebastianbergmann/phpunit.git", 677 | "reference": "4ddb822f1de421b4cadb47570a525fd7d9359493" 678 | }, 679 | "dist": { 680 | "type": "zip", 681 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ddb822f1de421b4cadb47570a525fd7d9359493", 682 | "reference": "4ddb822f1de421b4cadb47570a525fd7d9359493", 683 | "shasum": "" 684 | }, 685 | "require": { 686 | "ext-dom": "*", 687 | "ext-json": "*", 688 | "ext-libxml": "*", 689 | "ext-mbstring": "*", 690 | "ext-xml": "*", 691 | "myclabs/deep-copy": "~1.3", 692 | "php": "^5.6 || ^7.0", 693 | "phpspec/prophecy": "^1.3.1", 694 | "phpunit/php-code-coverage": "^4.0.1", 695 | "phpunit/php-file-iterator": "~1.4", 696 | "phpunit/php-text-template": "~1.2", 697 | "phpunit/php-timer": "^1.0.6", 698 | "phpunit/phpunit-mock-objects": "^3.2", 699 | "sebastian/comparator": "~1.1", 700 | "sebastian/diff": "~1.2", 701 | "sebastian/environment": "^1.3 || ^2.0", 702 | "sebastian/exporter": "~1.2", 703 | "sebastian/global-state": "~1.0", 704 | "sebastian/object-enumerator": "~1.0", 705 | "sebastian/resource-operations": "~1.0", 706 | "sebastian/version": "~1.0|~2.0", 707 | "symfony/yaml": "~2.1|~3.0" 708 | }, 709 | "conflict": { 710 | "phpdocumentor/reflection-docblock": "3.0.2", 711 | "sebastian/object-enumerator": "1.0.1", 712 | "sebastian/recursion-context": "1.0.3 || 1.0.4" 713 | }, 714 | "require-dev": { 715 | "ext-pdo": "*" 716 | }, 717 | "suggest": { 718 | "ext-xdebug": "*", 719 | "phpunit/php-invoker": "~1.1" 720 | }, 721 | "bin": [ 722 | "phpunit" 723 | ], 724 | "type": "library", 725 | "extra": { 726 | "branch-alias": { 727 | "dev-master": "5.6.x-dev" 728 | } 729 | }, 730 | "autoload": { 731 | "classmap": [ 732 | "src/" 733 | ] 734 | }, 735 | "notification-url": "https://packagist.org/downloads/", 736 | "license": [ 737 | "BSD-3-Clause" 738 | ], 739 | "authors": [ 740 | { 741 | "name": "Sebastian Bergmann", 742 | "email": "sebastian@phpunit.de", 743 | "role": "lead" 744 | } 745 | ], 746 | "description": "The PHP Unit Testing framework.", 747 | "homepage": "https://phpunit.de/", 748 | "keywords": [ 749 | "phpunit", 750 | "testing", 751 | "xunit" 752 | ], 753 | "time": "2016-11-18 09:50:51" 754 | }, 755 | { 756 | "name": "phpunit/phpunit-mock-objects", 757 | "version": "3.4.1", 758 | "source": { 759 | "type": "git", 760 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 761 | "reference": "45026c8383187ad1dcb14fbfec77dced265b9cfc" 762 | }, 763 | "dist": { 764 | "type": "zip", 765 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/45026c8383187ad1dcb14fbfec77dced265b9cfc", 766 | "reference": "45026c8383187ad1dcb14fbfec77dced265b9cfc", 767 | "shasum": "" 768 | }, 769 | "require": { 770 | "doctrine/instantiator": "^1.0.2", 771 | "php": "^5.6 || ^7.0", 772 | "phpunit/php-text-template": "^1.2", 773 | "sebastian/exporter": "^1.2 || ^2.0" 774 | }, 775 | "conflict": { 776 | "phpunit/phpunit": "<5.4.0" 777 | }, 778 | "require-dev": { 779 | "phpunit/phpunit": "^5.4" 780 | }, 781 | "suggest": { 782 | "ext-soap": "*" 783 | }, 784 | "type": "library", 785 | "extra": { 786 | "branch-alias": { 787 | "dev-master": "3.2.x-dev" 788 | } 789 | }, 790 | "autoload": { 791 | "classmap": [ 792 | "src/" 793 | ] 794 | }, 795 | "notification-url": "https://packagist.org/downloads/", 796 | "license": [ 797 | "BSD-3-Clause" 798 | ], 799 | "authors": [ 800 | { 801 | "name": "Sebastian Bergmann", 802 | "email": "sb@sebastian-bergmann.de", 803 | "role": "lead" 804 | } 805 | ], 806 | "description": "Mock Object library for PHPUnit", 807 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 808 | "keywords": [ 809 | "mock", 810 | "xunit" 811 | ], 812 | "time": "2016-11-19 09:07:46" 813 | }, 814 | { 815 | "name": "sebastian/code-unit-reverse-lookup", 816 | "version": "1.0.0", 817 | "source": { 818 | "type": "git", 819 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 820 | "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe" 821 | }, 822 | "dist": { 823 | "type": "zip", 824 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe", 825 | "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe", 826 | "shasum": "" 827 | }, 828 | "require": { 829 | "php": ">=5.6" 830 | }, 831 | "require-dev": { 832 | "phpunit/phpunit": "~5" 833 | }, 834 | "type": "library", 835 | "extra": { 836 | "branch-alias": { 837 | "dev-master": "1.0.x-dev" 838 | } 839 | }, 840 | "autoload": { 841 | "classmap": [ 842 | "src/" 843 | ] 844 | }, 845 | "notification-url": "https://packagist.org/downloads/", 846 | "license": [ 847 | "BSD-3-Clause" 848 | ], 849 | "authors": [ 850 | { 851 | "name": "Sebastian Bergmann", 852 | "email": "sebastian@phpunit.de" 853 | } 854 | ], 855 | "description": "Looks up which function or method a line of code belongs to", 856 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 857 | "time": "2016-02-13 06:45:14" 858 | }, 859 | { 860 | "name": "sebastian/comparator", 861 | "version": "1.2.2", 862 | "source": { 863 | "type": "git", 864 | "url": "https://github.com/sebastianbergmann/comparator.git", 865 | "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f" 866 | }, 867 | "dist": { 868 | "type": "zip", 869 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a1ed12e8b2409076ab22e3897126211ff8b1f7f", 870 | "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f", 871 | "shasum": "" 872 | }, 873 | "require": { 874 | "php": ">=5.3.3", 875 | "sebastian/diff": "~1.2", 876 | "sebastian/exporter": "~1.2 || ~2.0" 877 | }, 878 | "require-dev": { 879 | "phpunit/phpunit": "~4.4" 880 | }, 881 | "type": "library", 882 | "extra": { 883 | "branch-alias": { 884 | "dev-master": "1.2.x-dev" 885 | } 886 | }, 887 | "autoload": { 888 | "classmap": [ 889 | "src/" 890 | ] 891 | }, 892 | "notification-url": "https://packagist.org/downloads/", 893 | "license": [ 894 | "BSD-3-Clause" 895 | ], 896 | "authors": [ 897 | { 898 | "name": "Jeff Welch", 899 | "email": "whatthejeff@gmail.com" 900 | }, 901 | { 902 | "name": "Volker Dusch", 903 | "email": "github@wallbash.com" 904 | }, 905 | { 906 | "name": "Bernhard Schussek", 907 | "email": "bschussek@2bepublished.at" 908 | }, 909 | { 910 | "name": "Sebastian Bergmann", 911 | "email": "sebastian@phpunit.de" 912 | } 913 | ], 914 | "description": "Provides the functionality to compare PHP values for equality", 915 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 916 | "keywords": [ 917 | "comparator", 918 | "compare", 919 | "equality" 920 | ], 921 | "time": "2016-11-19 09:18:40" 922 | }, 923 | { 924 | "name": "sebastian/diff", 925 | "version": "1.4.1", 926 | "source": { 927 | "type": "git", 928 | "url": "https://github.com/sebastianbergmann/diff.git", 929 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" 930 | }, 931 | "dist": { 932 | "type": "zip", 933 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", 934 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", 935 | "shasum": "" 936 | }, 937 | "require": { 938 | "php": ">=5.3.3" 939 | }, 940 | "require-dev": { 941 | "phpunit/phpunit": "~4.8" 942 | }, 943 | "type": "library", 944 | "extra": { 945 | "branch-alias": { 946 | "dev-master": "1.4-dev" 947 | } 948 | }, 949 | "autoload": { 950 | "classmap": [ 951 | "src/" 952 | ] 953 | }, 954 | "notification-url": "https://packagist.org/downloads/", 955 | "license": [ 956 | "BSD-3-Clause" 957 | ], 958 | "authors": [ 959 | { 960 | "name": "Kore Nordmann", 961 | "email": "mail@kore-nordmann.de" 962 | }, 963 | { 964 | "name": "Sebastian Bergmann", 965 | "email": "sebastian@phpunit.de" 966 | } 967 | ], 968 | "description": "Diff implementation", 969 | "homepage": "https://github.com/sebastianbergmann/diff", 970 | "keywords": [ 971 | "diff" 972 | ], 973 | "time": "2015-12-08 07:14:41" 974 | }, 975 | { 976 | "name": "sebastian/environment", 977 | "version": "1.3.8", 978 | "source": { 979 | "type": "git", 980 | "url": "https://github.com/sebastianbergmann/environment.git", 981 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" 982 | }, 983 | "dist": { 984 | "type": "zip", 985 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", 986 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", 987 | "shasum": "" 988 | }, 989 | "require": { 990 | "php": "^5.3.3 || ^7.0" 991 | }, 992 | "require-dev": { 993 | "phpunit/phpunit": "^4.8 || ^5.0" 994 | }, 995 | "type": "library", 996 | "extra": { 997 | "branch-alias": { 998 | "dev-master": "1.3.x-dev" 999 | } 1000 | }, 1001 | "autoload": { 1002 | "classmap": [ 1003 | "src/" 1004 | ] 1005 | }, 1006 | "notification-url": "https://packagist.org/downloads/", 1007 | "license": [ 1008 | "BSD-3-Clause" 1009 | ], 1010 | "authors": [ 1011 | { 1012 | "name": "Sebastian Bergmann", 1013 | "email": "sebastian@phpunit.de" 1014 | } 1015 | ], 1016 | "description": "Provides functionality to handle HHVM/PHP environments", 1017 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1018 | "keywords": [ 1019 | "Xdebug", 1020 | "environment", 1021 | "hhvm" 1022 | ], 1023 | "time": "2016-08-18 05:49:44" 1024 | }, 1025 | { 1026 | "name": "sebastian/exporter", 1027 | "version": "1.2.2", 1028 | "source": { 1029 | "type": "git", 1030 | "url": "https://github.com/sebastianbergmann/exporter.git", 1031 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 1032 | }, 1033 | "dist": { 1034 | "type": "zip", 1035 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 1036 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 1037 | "shasum": "" 1038 | }, 1039 | "require": { 1040 | "php": ">=5.3.3", 1041 | "sebastian/recursion-context": "~1.0" 1042 | }, 1043 | "require-dev": { 1044 | "ext-mbstring": "*", 1045 | "phpunit/phpunit": "~4.4" 1046 | }, 1047 | "type": "library", 1048 | "extra": { 1049 | "branch-alias": { 1050 | "dev-master": "1.3.x-dev" 1051 | } 1052 | }, 1053 | "autoload": { 1054 | "classmap": [ 1055 | "src/" 1056 | ] 1057 | }, 1058 | "notification-url": "https://packagist.org/downloads/", 1059 | "license": [ 1060 | "BSD-3-Clause" 1061 | ], 1062 | "authors": [ 1063 | { 1064 | "name": "Jeff Welch", 1065 | "email": "whatthejeff@gmail.com" 1066 | }, 1067 | { 1068 | "name": "Volker Dusch", 1069 | "email": "github@wallbash.com" 1070 | }, 1071 | { 1072 | "name": "Bernhard Schussek", 1073 | "email": "bschussek@2bepublished.at" 1074 | }, 1075 | { 1076 | "name": "Sebastian Bergmann", 1077 | "email": "sebastian@phpunit.de" 1078 | }, 1079 | { 1080 | "name": "Adam Harvey", 1081 | "email": "aharvey@php.net" 1082 | } 1083 | ], 1084 | "description": "Provides the functionality to export PHP variables for visualization", 1085 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1086 | "keywords": [ 1087 | "export", 1088 | "exporter" 1089 | ], 1090 | "time": "2016-06-17 09:04:28" 1091 | }, 1092 | { 1093 | "name": "sebastian/global-state", 1094 | "version": "1.1.1", 1095 | "source": { 1096 | "type": "git", 1097 | "url": "https://github.com/sebastianbergmann/global-state.git", 1098 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 1099 | }, 1100 | "dist": { 1101 | "type": "zip", 1102 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 1103 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 1104 | "shasum": "" 1105 | }, 1106 | "require": { 1107 | "php": ">=5.3.3" 1108 | }, 1109 | "require-dev": { 1110 | "phpunit/phpunit": "~4.2" 1111 | }, 1112 | "suggest": { 1113 | "ext-uopz": "*" 1114 | }, 1115 | "type": "library", 1116 | "extra": { 1117 | "branch-alias": { 1118 | "dev-master": "1.0-dev" 1119 | } 1120 | }, 1121 | "autoload": { 1122 | "classmap": [ 1123 | "src/" 1124 | ] 1125 | }, 1126 | "notification-url": "https://packagist.org/downloads/", 1127 | "license": [ 1128 | "BSD-3-Clause" 1129 | ], 1130 | "authors": [ 1131 | { 1132 | "name": "Sebastian Bergmann", 1133 | "email": "sebastian@phpunit.de" 1134 | } 1135 | ], 1136 | "description": "Snapshotting of global state", 1137 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1138 | "keywords": [ 1139 | "global state" 1140 | ], 1141 | "time": "2015-10-12 03:26:01" 1142 | }, 1143 | { 1144 | "name": "sebastian/object-enumerator", 1145 | "version": "1.0.0", 1146 | "source": { 1147 | "type": "git", 1148 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1149 | "reference": "d4ca2fb70344987502567bc50081c03e6192fb26" 1150 | }, 1151 | "dist": { 1152 | "type": "zip", 1153 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d4ca2fb70344987502567bc50081c03e6192fb26", 1154 | "reference": "d4ca2fb70344987502567bc50081c03e6192fb26", 1155 | "shasum": "" 1156 | }, 1157 | "require": { 1158 | "php": ">=5.6", 1159 | "sebastian/recursion-context": "~1.0" 1160 | }, 1161 | "require-dev": { 1162 | "phpunit/phpunit": "~5" 1163 | }, 1164 | "type": "library", 1165 | "extra": { 1166 | "branch-alias": { 1167 | "dev-master": "1.0.x-dev" 1168 | } 1169 | }, 1170 | "autoload": { 1171 | "classmap": [ 1172 | "src/" 1173 | ] 1174 | }, 1175 | "notification-url": "https://packagist.org/downloads/", 1176 | "license": [ 1177 | "BSD-3-Clause" 1178 | ], 1179 | "authors": [ 1180 | { 1181 | "name": "Sebastian Bergmann", 1182 | "email": "sebastian@phpunit.de" 1183 | } 1184 | ], 1185 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1186 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1187 | "time": "2016-01-28 13:25:10" 1188 | }, 1189 | { 1190 | "name": "sebastian/recursion-context", 1191 | "version": "1.0.2", 1192 | "source": { 1193 | "type": "git", 1194 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1195 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791" 1196 | }, 1197 | "dist": { 1198 | "type": "zip", 1199 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", 1200 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791", 1201 | "shasum": "" 1202 | }, 1203 | "require": { 1204 | "php": ">=5.3.3" 1205 | }, 1206 | "require-dev": { 1207 | "phpunit/phpunit": "~4.4" 1208 | }, 1209 | "type": "library", 1210 | "extra": { 1211 | "branch-alias": { 1212 | "dev-master": "1.0.x-dev" 1213 | } 1214 | }, 1215 | "autoload": { 1216 | "classmap": [ 1217 | "src/" 1218 | ] 1219 | }, 1220 | "notification-url": "https://packagist.org/downloads/", 1221 | "license": [ 1222 | "BSD-3-Clause" 1223 | ], 1224 | "authors": [ 1225 | { 1226 | "name": "Jeff Welch", 1227 | "email": "whatthejeff@gmail.com" 1228 | }, 1229 | { 1230 | "name": "Sebastian Bergmann", 1231 | "email": "sebastian@phpunit.de" 1232 | }, 1233 | { 1234 | "name": "Adam Harvey", 1235 | "email": "aharvey@php.net" 1236 | } 1237 | ], 1238 | "description": "Provides functionality to recursively process PHP variables", 1239 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1240 | "time": "2015-11-11 19:50:13" 1241 | }, 1242 | { 1243 | "name": "sebastian/resource-operations", 1244 | "version": "1.0.0", 1245 | "source": { 1246 | "type": "git", 1247 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1248 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 1249 | }, 1250 | "dist": { 1251 | "type": "zip", 1252 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1253 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1254 | "shasum": "" 1255 | }, 1256 | "require": { 1257 | "php": ">=5.6.0" 1258 | }, 1259 | "type": "library", 1260 | "extra": { 1261 | "branch-alias": { 1262 | "dev-master": "1.0.x-dev" 1263 | } 1264 | }, 1265 | "autoload": { 1266 | "classmap": [ 1267 | "src/" 1268 | ] 1269 | }, 1270 | "notification-url": "https://packagist.org/downloads/", 1271 | "license": [ 1272 | "BSD-3-Clause" 1273 | ], 1274 | "authors": [ 1275 | { 1276 | "name": "Sebastian Bergmann", 1277 | "email": "sebastian@phpunit.de" 1278 | } 1279 | ], 1280 | "description": "Provides a list of PHP built-in functions that operate on resources", 1281 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1282 | "time": "2015-07-28 20:34:47" 1283 | }, 1284 | { 1285 | "name": "sebastian/version", 1286 | "version": "2.0.0", 1287 | "source": { 1288 | "type": "git", 1289 | "url": "https://github.com/sebastianbergmann/version.git", 1290 | "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5" 1291 | }, 1292 | "dist": { 1293 | "type": "zip", 1294 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5", 1295 | "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5", 1296 | "shasum": "" 1297 | }, 1298 | "require": { 1299 | "php": ">=5.6" 1300 | }, 1301 | "type": "library", 1302 | "extra": { 1303 | "branch-alias": { 1304 | "dev-master": "2.0.x-dev" 1305 | } 1306 | }, 1307 | "autoload": { 1308 | "classmap": [ 1309 | "src/" 1310 | ] 1311 | }, 1312 | "notification-url": "https://packagist.org/downloads/", 1313 | "license": [ 1314 | "BSD-3-Clause" 1315 | ], 1316 | "authors": [ 1317 | { 1318 | "name": "Sebastian Bergmann", 1319 | "email": "sebastian@phpunit.de", 1320 | "role": "lead" 1321 | } 1322 | ], 1323 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1324 | "homepage": "https://github.com/sebastianbergmann/version", 1325 | "time": "2016-02-04 12:56:52" 1326 | }, 1327 | { 1328 | "name": "symfony/console", 1329 | "version": "v3.1.6", 1330 | "source": { 1331 | "type": "git", 1332 | "url": "https://github.com/symfony/console.git", 1333 | "reference": "c99da1119ae61e15de0e4829196b9fba6f73d065" 1334 | }, 1335 | "dist": { 1336 | "type": "zip", 1337 | "url": "https://api.github.com/repos/symfony/console/zipball/c99da1119ae61e15de0e4829196b9fba6f73d065", 1338 | "reference": "c99da1119ae61e15de0e4829196b9fba6f73d065", 1339 | "shasum": "" 1340 | }, 1341 | "require": { 1342 | "php": ">=5.5.9", 1343 | "symfony/debug": "~2.8|~3.0", 1344 | "symfony/polyfill-mbstring": "~1.0" 1345 | }, 1346 | "require-dev": { 1347 | "psr/log": "~1.0", 1348 | "symfony/event-dispatcher": "~2.8|~3.0", 1349 | "symfony/process": "~2.8|~3.0" 1350 | }, 1351 | "suggest": { 1352 | "psr/log": "For using the console logger", 1353 | "symfony/event-dispatcher": "", 1354 | "symfony/process": "" 1355 | }, 1356 | "type": "library", 1357 | "extra": { 1358 | "branch-alias": { 1359 | "dev-master": "3.1-dev" 1360 | } 1361 | }, 1362 | "autoload": { 1363 | "psr-4": { 1364 | "Symfony\\Component\\Console\\": "" 1365 | }, 1366 | "exclude-from-classmap": [ 1367 | "/Tests/" 1368 | ] 1369 | }, 1370 | "notification-url": "https://packagist.org/downloads/", 1371 | "license": [ 1372 | "MIT" 1373 | ], 1374 | "authors": [ 1375 | { 1376 | "name": "Fabien Potencier", 1377 | "email": "fabien@symfony.com" 1378 | }, 1379 | { 1380 | "name": "Symfony Community", 1381 | "homepage": "https://symfony.com/contributors" 1382 | } 1383 | ], 1384 | "description": "Symfony Console Component", 1385 | "homepage": "https://symfony.com", 1386 | "time": "2016-10-06 01:44:51" 1387 | }, 1388 | { 1389 | "name": "symfony/debug", 1390 | "version": "v3.1.6", 1391 | "source": { 1392 | "type": "git", 1393 | "url": "https://github.com/symfony/debug.git", 1394 | "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8" 1395 | }, 1396 | "dist": { 1397 | "type": "zip", 1398 | "url": "https://api.github.com/repos/symfony/debug/zipball/e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", 1399 | "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", 1400 | "shasum": "" 1401 | }, 1402 | "require": { 1403 | "php": ">=5.5.9", 1404 | "psr/log": "~1.0" 1405 | }, 1406 | "conflict": { 1407 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 1408 | }, 1409 | "require-dev": { 1410 | "symfony/class-loader": "~2.8|~3.0", 1411 | "symfony/http-kernel": "~2.8|~3.0" 1412 | }, 1413 | "type": "library", 1414 | "extra": { 1415 | "branch-alias": { 1416 | "dev-master": "3.1-dev" 1417 | } 1418 | }, 1419 | "autoload": { 1420 | "psr-4": { 1421 | "Symfony\\Component\\Debug\\": "" 1422 | }, 1423 | "exclude-from-classmap": [ 1424 | "/Tests/" 1425 | ] 1426 | }, 1427 | "notification-url": "https://packagist.org/downloads/", 1428 | "license": [ 1429 | "MIT" 1430 | ], 1431 | "authors": [ 1432 | { 1433 | "name": "Fabien Potencier", 1434 | "email": "fabien@symfony.com" 1435 | }, 1436 | { 1437 | "name": "Symfony Community", 1438 | "homepage": "https://symfony.com/contributors" 1439 | } 1440 | ], 1441 | "description": "Symfony Debug Component", 1442 | "homepage": "https://symfony.com", 1443 | "time": "2016-09-06 11:02:40" 1444 | }, 1445 | { 1446 | "name": "symfony/event-dispatcher", 1447 | "version": "v3.1.6", 1448 | "source": { 1449 | "type": "git", 1450 | "url": "https://github.com/symfony/event-dispatcher.git", 1451 | "reference": "28b0832b2553ffb80cabef6a7a812ff1e670c0bc" 1452 | }, 1453 | "dist": { 1454 | "type": "zip", 1455 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/28b0832b2553ffb80cabef6a7a812ff1e670c0bc", 1456 | "reference": "28b0832b2553ffb80cabef6a7a812ff1e670c0bc", 1457 | "shasum": "" 1458 | }, 1459 | "require": { 1460 | "php": ">=5.5.9" 1461 | }, 1462 | "require-dev": { 1463 | "psr/log": "~1.0", 1464 | "symfony/config": "~2.8|~3.0", 1465 | "symfony/dependency-injection": "~2.8|~3.0", 1466 | "symfony/expression-language": "~2.8|~3.0", 1467 | "symfony/stopwatch": "~2.8|~3.0" 1468 | }, 1469 | "suggest": { 1470 | "symfony/dependency-injection": "", 1471 | "symfony/http-kernel": "" 1472 | }, 1473 | "type": "library", 1474 | "extra": { 1475 | "branch-alias": { 1476 | "dev-master": "3.1-dev" 1477 | } 1478 | }, 1479 | "autoload": { 1480 | "psr-4": { 1481 | "Symfony\\Component\\EventDispatcher\\": "" 1482 | }, 1483 | "exclude-from-classmap": [ 1484 | "/Tests/" 1485 | ] 1486 | }, 1487 | "notification-url": "https://packagist.org/downloads/", 1488 | "license": [ 1489 | "MIT" 1490 | ], 1491 | "authors": [ 1492 | { 1493 | "name": "Fabien Potencier", 1494 | "email": "fabien@symfony.com" 1495 | }, 1496 | { 1497 | "name": "Symfony Community", 1498 | "homepage": "https://symfony.com/contributors" 1499 | } 1500 | ], 1501 | "description": "Symfony EventDispatcher Component", 1502 | "homepage": "https://symfony.com", 1503 | "time": "2016-10-13 06:28:43" 1504 | }, 1505 | { 1506 | "name": "symfony/filesystem", 1507 | "version": "v3.1.6", 1508 | "source": { 1509 | "type": "git", 1510 | "url": "https://github.com/symfony/filesystem.git", 1511 | "reference": "0565b61bf098cb4dc09f4f103f033138ae4f42c6" 1512 | }, 1513 | "dist": { 1514 | "type": "zip", 1515 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/0565b61bf098cb4dc09f4f103f033138ae4f42c6", 1516 | "reference": "0565b61bf098cb4dc09f4f103f033138ae4f42c6", 1517 | "shasum": "" 1518 | }, 1519 | "require": { 1520 | "php": ">=5.5.9" 1521 | }, 1522 | "type": "library", 1523 | "extra": { 1524 | "branch-alias": { 1525 | "dev-master": "3.1-dev" 1526 | } 1527 | }, 1528 | "autoload": { 1529 | "psr-4": { 1530 | "Symfony\\Component\\Filesystem\\": "" 1531 | }, 1532 | "exclude-from-classmap": [ 1533 | "/Tests/" 1534 | ] 1535 | }, 1536 | "notification-url": "https://packagist.org/downloads/", 1537 | "license": [ 1538 | "MIT" 1539 | ], 1540 | "authors": [ 1541 | { 1542 | "name": "Fabien Potencier", 1543 | "email": "fabien@symfony.com" 1544 | }, 1545 | { 1546 | "name": "Symfony Community", 1547 | "homepage": "https://symfony.com/contributors" 1548 | } 1549 | ], 1550 | "description": "Symfony Filesystem Component", 1551 | "homepage": "https://symfony.com", 1552 | "time": "2016-10-18 04:30:12" 1553 | }, 1554 | { 1555 | "name": "symfony/finder", 1556 | "version": "v3.1.6", 1557 | "source": { 1558 | "type": "git", 1559 | "url": "https://github.com/symfony/finder.git", 1560 | "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f" 1561 | }, 1562 | "dist": { 1563 | "type": "zip", 1564 | "url": "https://api.github.com/repos/symfony/finder/zipball/205b5ffbb518a98ba2ae60a52656c4a31ab00c6f", 1565 | "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f", 1566 | "shasum": "" 1567 | }, 1568 | "require": { 1569 | "php": ">=5.5.9" 1570 | }, 1571 | "type": "library", 1572 | "extra": { 1573 | "branch-alias": { 1574 | "dev-master": "3.1-dev" 1575 | } 1576 | }, 1577 | "autoload": { 1578 | "psr-4": { 1579 | "Symfony\\Component\\Finder\\": "" 1580 | }, 1581 | "exclude-from-classmap": [ 1582 | "/Tests/" 1583 | ] 1584 | }, 1585 | "notification-url": "https://packagist.org/downloads/", 1586 | "license": [ 1587 | "MIT" 1588 | ], 1589 | "authors": [ 1590 | { 1591 | "name": "Fabien Potencier", 1592 | "email": "fabien@symfony.com" 1593 | }, 1594 | { 1595 | "name": "Symfony Community", 1596 | "homepage": "https://symfony.com/contributors" 1597 | } 1598 | ], 1599 | "description": "Symfony Finder Component", 1600 | "homepage": "https://symfony.com", 1601 | "time": "2016-09-28 00:11:12" 1602 | }, 1603 | { 1604 | "name": "symfony/polyfill-mbstring", 1605 | "version": "v1.3.0", 1606 | "source": { 1607 | "type": "git", 1608 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1609 | "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" 1610 | }, 1611 | "dist": { 1612 | "type": "zip", 1613 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", 1614 | "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", 1615 | "shasum": "" 1616 | }, 1617 | "require": { 1618 | "php": ">=5.3.3" 1619 | }, 1620 | "suggest": { 1621 | "ext-mbstring": "For best performance" 1622 | }, 1623 | "type": "library", 1624 | "extra": { 1625 | "branch-alias": { 1626 | "dev-master": "1.3-dev" 1627 | } 1628 | }, 1629 | "autoload": { 1630 | "psr-4": { 1631 | "Symfony\\Polyfill\\Mbstring\\": "" 1632 | }, 1633 | "files": [ 1634 | "bootstrap.php" 1635 | ] 1636 | }, 1637 | "notification-url": "https://packagist.org/downloads/", 1638 | "license": [ 1639 | "MIT" 1640 | ], 1641 | "authors": [ 1642 | { 1643 | "name": "Nicolas Grekas", 1644 | "email": "p@tchwork.com" 1645 | }, 1646 | { 1647 | "name": "Symfony Community", 1648 | "homepage": "https://symfony.com/contributors" 1649 | } 1650 | ], 1651 | "description": "Symfony polyfill for the Mbstring extension", 1652 | "homepage": "https://symfony.com", 1653 | "keywords": [ 1654 | "compatibility", 1655 | "mbstring", 1656 | "polyfill", 1657 | "portable", 1658 | "shim" 1659 | ], 1660 | "time": "2016-11-14 01:06:16" 1661 | }, 1662 | { 1663 | "name": "symfony/polyfill-php54", 1664 | "version": "v1.3.0", 1665 | "source": { 1666 | "type": "git", 1667 | "url": "https://github.com/symfony/polyfill-php54.git", 1668 | "reference": "90e085822963fdcc9d1c5b73deb3d2e5783b16a0" 1669 | }, 1670 | "dist": { 1671 | "type": "zip", 1672 | "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/90e085822963fdcc9d1c5b73deb3d2e5783b16a0", 1673 | "reference": "90e085822963fdcc9d1c5b73deb3d2e5783b16a0", 1674 | "shasum": "" 1675 | }, 1676 | "require": { 1677 | "php": ">=5.3.3" 1678 | }, 1679 | "type": "library", 1680 | "extra": { 1681 | "branch-alias": { 1682 | "dev-master": "1.3-dev" 1683 | } 1684 | }, 1685 | "autoload": { 1686 | "psr-4": { 1687 | "Symfony\\Polyfill\\Php54\\": "" 1688 | }, 1689 | "files": [ 1690 | "bootstrap.php" 1691 | ], 1692 | "classmap": [ 1693 | "Resources/stubs" 1694 | ] 1695 | }, 1696 | "notification-url": "https://packagist.org/downloads/", 1697 | "license": [ 1698 | "MIT" 1699 | ], 1700 | "authors": [ 1701 | { 1702 | "name": "Nicolas Grekas", 1703 | "email": "p@tchwork.com" 1704 | }, 1705 | { 1706 | "name": "Symfony Community", 1707 | "homepage": "https://symfony.com/contributors" 1708 | } 1709 | ], 1710 | "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions", 1711 | "homepage": "https://symfony.com", 1712 | "keywords": [ 1713 | "compatibility", 1714 | "polyfill", 1715 | "portable", 1716 | "shim" 1717 | ], 1718 | "time": "2016-11-14 01:06:16" 1719 | }, 1720 | { 1721 | "name": "symfony/process", 1722 | "version": "v3.1.6", 1723 | "source": { 1724 | "type": "git", 1725 | "url": "https://github.com/symfony/process.git", 1726 | "reference": "66de154ae86b1a07001da9fbffd620206e4faf94" 1727 | }, 1728 | "dist": { 1729 | "type": "zip", 1730 | "url": "https://api.github.com/repos/symfony/process/zipball/66de154ae86b1a07001da9fbffd620206e4faf94", 1731 | "reference": "66de154ae86b1a07001da9fbffd620206e4faf94", 1732 | "shasum": "" 1733 | }, 1734 | "require": { 1735 | "php": ">=5.5.9" 1736 | }, 1737 | "type": "library", 1738 | "extra": { 1739 | "branch-alias": { 1740 | "dev-master": "3.1-dev" 1741 | } 1742 | }, 1743 | "autoload": { 1744 | "psr-4": { 1745 | "Symfony\\Component\\Process\\": "" 1746 | }, 1747 | "exclude-from-classmap": [ 1748 | "/Tests/" 1749 | ] 1750 | }, 1751 | "notification-url": "https://packagist.org/downloads/", 1752 | "license": [ 1753 | "MIT" 1754 | ], 1755 | "authors": [ 1756 | { 1757 | "name": "Fabien Potencier", 1758 | "email": "fabien@symfony.com" 1759 | }, 1760 | { 1761 | "name": "Symfony Community", 1762 | "homepage": "https://symfony.com/contributors" 1763 | } 1764 | ], 1765 | "description": "Symfony Process Component", 1766 | "homepage": "https://symfony.com", 1767 | "time": "2016-09-29 14:13:09" 1768 | }, 1769 | { 1770 | "name": "symfony/stopwatch", 1771 | "version": "v3.1.6", 1772 | "source": { 1773 | "type": "git", 1774 | "url": "https://github.com/symfony/stopwatch.git", 1775 | "reference": "bb42806b12c5f89db4ebf64af6741afe6d8457e1" 1776 | }, 1777 | "dist": { 1778 | "type": "zip", 1779 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/bb42806b12c5f89db4ebf64af6741afe6d8457e1", 1780 | "reference": "bb42806b12c5f89db4ebf64af6741afe6d8457e1", 1781 | "shasum": "" 1782 | }, 1783 | "require": { 1784 | "php": ">=5.5.9" 1785 | }, 1786 | "type": "library", 1787 | "extra": { 1788 | "branch-alias": { 1789 | "dev-master": "3.1-dev" 1790 | } 1791 | }, 1792 | "autoload": { 1793 | "psr-4": { 1794 | "Symfony\\Component\\Stopwatch\\": "" 1795 | }, 1796 | "exclude-from-classmap": [ 1797 | "/Tests/" 1798 | ] 1799 | }, 1800 | "notification-url": "https://packagist.org/downloads/", 1801 | "license": [ 1802 | "MIT" 1803 | ], 1804 | "authors": [ 1805 | { 1806 | "name": "Fabien Potencier", 1807 | "email": "fabien@symfony.com" 1808 | }, 1809 | { 1810 | "name": "Symfony Community", 1811 | "homepage": "https://symfony.com/contributors" 1812 | } 1813 | ], 1814 | "description": "Symfony Stopwatch Component", 1815 | "homepage": "https://symfony.com", 1816 | "time": "2016-06-29 05:41:56" 1817 | }, 1818 | { 1819 | "name": "symfony/yaml", 1820 | "version": "v3.1.6", 1821 | "source": { 1822 | "type": "git", 1823 | "url": "https://github.com/symfony/yaml.git", 1824 | "reference": "7ff51b06c6c3d5cc6686df69004a42c69df09e27" 1825 | }, 1826 | "dist": { 1827 | "type": "zip", 1828 | "url": "https://api.github.com/repos/symfony/yaml/zipball/7ff51b06c6c3d5cc6686df69004a42c69df09e27", 1829 | "reference": "7ff51b06c6c3d5cc6686df69004a42c69df09e27", 1830 | "shasum": "" 1831 | }, 1832 | "require": { 1833 | "php": ">=5.5.9" 1834 | }, 1835 | "type": "library", 1836 | "extra": { 1837 | "branch-alias": { 1838 | "dev-master": "3.1-dev" 1839 | } 1840 | }, 1841 | "autoload": { 1842 | "psr-4": { 1843 | "Symfony\\Component\\Yaml\\": "" 1844 | }, 1845 | "exclude-from-classmap": [ 1846 | "/Tests/" 1847 | ] 1848 | }, 1849 | "notification-url": "https://packagist.org/downloads/", 1850 | "license": [ 1851 | "MIT" 1852 | ], 1853 | "authors": [ 1854 | { 1855 | "name": "Fabien Potencier", 1856 | "email": "fabien@symfony.com" 1857 | }, 1858 | { 1859 | "name": "Symfony Community", 1860 | "homepage": "https://symfony.com/contributors" 1861 | } 1862 | ], 1863 | "description": "Symfony Yaml Component", 1864 | "homepage": "https://symfony.com", 1865 | "time": "2016-10-24 18:41:13" 1866 | }, 1867 | { 1868 | "name": "webmozart/assert", 1869 | "version": "1.1.0", 1870 | "source": { 1871 | "type": "git", 1872 | "url": "https://github.com/webmozart/assert.git", 1873 | "reference": "bb2d123231c095735130cc8f6d31385a44c7b308" 1874 | }, 1875 | "dist": { 1876 | "type": "zip", 1877 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bb2d123231c095735130cc8f6d31385a44c7b308", 1878 | "reference": "bb2d123231c095735130cc8f6d31385a44c7b308", 1879 | "shasum": "" 1880 | }, 1881 | "require": { 1882 | "php": "^5.3.3|^7.0" 1883 | }, 1884 | "require-dev": { 1885 | "phpunit/phpunit": "^4.6", 1886 | "sebastian/version": "^1.0.1" 1887 | }, 1888 | "type": "library", 1889 | "extra": { 1890 | "branch-alias": { 1891 | "dev-master": "1.2-dev" 1892 | } 1893 | }, 1894 | "autoload": { 1895 | "psr-4": { 1896 | "Webmozart\\Assert\\": "src/" 1897 | } 1898 | }, 1899 | "notification-url": "https://packagist.org/downloads/", 1900 | "license": [ 1901 | "MIT" 1902 | ], 1903 | "authors": [ 1904 | { 1905 | "name": "Bernhard Schussek", 1906 | "email": "bschussek@gmail.com" 1907 | } 1908 | ], 1909 | "description": "Assertions to validate method input/output with nice error messages.", 1910 | "keywords": [ 1911 | "assert", 1912 | "check", 1913 | "validate" 1914 | ], 1915 | "time": "2016-08-09 15:02:57" 1916 | } 1917 | ], 1918 | "aliases": [], 1919 | "minimum-stability": "stable", 1920 | "stability-flags": { 1921 | "friendsofphp/php-cs-fixer": 5 1922 | }, 1923 | "prefer-stable": false, 1924 | "prefer-lowest": false, 1925 | "platform": { 1926 | "php": "^5.6|^7.0" 1927 | }, 1928 | "platform-dev": [] 1929 | } 1930 | --------------------------------------------------------------------------------