diff --git a/.gitignore b/.gitignore
index 5beae24..0f8c49d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
vendor/
ansible/
report/
-composer.lock
-phpunit.xml
\ No newline at end of file
+phpunit.xml
+/.php_cs.cache
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..43432ca
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,96 @@
+stages:
+ - build
+ - analysis
+ - testing
+ - reporting
+
+build:composer:
+ stage: build
+ image: php:7.1
+ before_script:
+ # Install git&ssh
+ - apt-get update -yqq
+ - apt-get install openssh-client -yqq > /dev/null
+ - apt-get install git -yqq > /dev/null
+
+ # Setup ssh
+ - eval $(ssh-agent -s)
+ - ssh-add <(echo "$SSH_PRIVATE_KEY")
+ - mkdir -p ~/.ssh
+ - ssh-keyscan -t rsa git.prod.sup.fdmg.org,$(dig +short git.prod.sup.fdmg.org) >> ~/.ssh/known_hosts
+ - '[[ -f /.dockerinit ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
+
+ # Install extensions for update file manager
+ - apt-get install -yqq libc-client-dev libkrb5-dev > /dev/null
+ - docker-php-ext-install zip > /dev/null
+ - curl --silent --show-error https://getcomposer.org/installer | php
+ script:
+ - php composer.phar install --no-suggest --no-interaction --ignore-platform-reqs --no-progress
+ cache:
+ paths:
+ - vendor
+ - .composer/cache
+ artifacts:
+ paths:
+ - vendor
+
+analysis:sonarqube-feedback:
+ stage: analysis
+ image: ciricihq/gitlab-sonar-scanner
+ variables:
+ SONAR_URL: "https://sonar.fdmg.org"
+ SONAR_PROJECT_VERSION: "$CI_BUILD_ID"
+ SONAR_ANALYSIS_MODE: "issues"
+ script:
+ - /usr/bin/sonar-scanner-run.sh
+
+reporting:sonarqube-report:
+ stage: reporting
+ image: ciricihq/gitlab-sonar-scanner
+ variables:
+ SONAR_URL: "https://sonar.fdmg.org"
+ SONAR_PROJECT_VERSION: "$CI_BUILD_ID"
+ SONAR_ANALYSIS_MODE: "publish"
+ script:
+ - unset CI_BUILD_REF && /usr/bin/sonar-scanner-run.sh
+ dependencies:
+ - testing:phpunit
+
+analysis:php-cs-fixer:
+ stage: analysis
+ image: php:7.1-alpine
+ script:
+ - vendor/bin/php-cs-fixer fix --config=.php_cs.dist -v --allow-risky=yes --dry-run --using-cache=no --path-mode=intersection `git diff --name-only --diff-filter=ACMRTUXB HEAD~..$CI_BUILD_REF`
+ dependencies:
+ - build:composer
+
+analysis:security-checker:
+ stage: analysis
+ image: php:7.1-alpine
+ script:
+ - vendor/bin/security-checker security:check composer.lock
+ dependencies:
+ - build:composer
+
+testing:phpunit:
+ stage: testing
+ image: php:7.1-alpine
+ before_script:
+ - apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
+ - docker-php-source extract
+ - pecl install xdebug
+ - docker-php-ext-enable xdebug
+ - docker-php-source delete
+ - echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+ - echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+ - echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+ - echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+ - echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+ - apk del .phpize-deps
+ script:
+ - php vendor/bin/phpunit --coverage-text --colors=never --exclude-group functional --coverage-clover=report/phpunit/clover.xml --log-junit=report/phpunit/junit.xml
+ dependencies:
+ - build:composer
+ artifacts:
+ paths:
+ - report/phpunit
diff --git a/.php_cs.dist b/.php_cs.dist
new file mode 100644
index 0000000..bd09011
--- /dev/null
+++ b/.php_cs.dist
@@ -0,0 +1,197 @@
+exclude('vendor')
+ ->in(__DIR__)
+;
+
+return PhpCsFixer\Config::create()
+ ->setFinder($finder)
+ ->setRiskyAllowed(false)
+ ->setRules(
+ [
+ 'array_syntax' => ['syntax' => 'short'],
+ 'binary_operator_spaces' => true,
+ 'blank_line_after_namespace' => true,
+ 'blank_line_after_opening_tag' => true,
+ 'blank_line_before_return' => true,
+ 'braces' => true,
+ 'cast_spaces' => true,
+ 'class_definition' => true,
+ 'class_keyword_remove' => false,
+ 'combine_consecutive_unsets' => true,
+ 'concat_space' => ['spacing' => 'one'],
+ 'declare_equal_normalize' => true,
+ 'declare_strict_types' => false, //risky
+ 'dir_constant' => false, // risky
+ 'elseif' => true,
+ 'encoding' => true,
+ 'ereg_to_preg' => false,
+ 'full_opening_tag' => true,
+ 'function_declaration' => true,
+ 'function_typehint_space' => true,
+ 'general_phpdoc_annotation_remove' => false,
+ 'hash_to_slash_comment' => true,
+ //'header_comment' => ['header' => 'header'],
+ 'heredoc_to_nowdoc' => false,
+ 'include' => true,
+ //'indentation_type' => [],
+ 'line_ending' => true,
+ 'linebreak_after_opening_tag' => true,
+ 'lowercase_cast' => true,
+ 'lowercase_constants' => true,
+ 'lowercase_keywords' => true,
+ 'mb_str_functions' => false,
+ 'method_argument_space' => true,
+ 'method_separation' => true,
+ 'modernize_types_casting' => false, // risky
+ 'native_function_casing' => true,
+ 'new_with_braces' => true,
+ 'no_alias_functions' => false,
+ 'no_blank_lines_after_class_opening' => true,
+ 'no_blank_lines_after_phpdoc' => true,
+ 'no_blank_lines_before_namespace' => false,
+ 'no_closing_tag' => true,
+ 'no_empty_comment' => true,
+ 'no_empty_phpdoc' => true,
+ 'no_empty_statement' => true,
+ 'no_extra_consecutive_blank_lines' => [
+ 'break',
+ 'continue',
+ 'extra',
+ 'return',
+ 'throw',
+ 'use',
+ 'useTrait',
+ 'curly_brace_block',
+ 'parenthesis_brace_block',
+ 'square_brace_block',
+ ],
+ 'no_leading_import_slash' => true,
+ 'no_leading_namespace_whitespace' => true,
+ 'no_mixed_echo_print' => ['use' => 'echo'],
+ 'no_multiline_whitespace_around_double_arrow' => true,
+ 'no_multiline_whitespace_before_semicolons' => true,
+ 'no_php4_constructor' => false, //risky
+ 'no_short_bool_cast' => true,
+ 'no_short_echo_tag' => true,
+ 'no_singleline_whitespace_before_semicolons' => true,
+ 'no_spaces_after_function_name' => true,
+ 'no_spaces_around_offset' => ['outside', 'inside'],
+ 'no_spaces_inside_parenthesis' => true,
+ 'no_trailing_comma_in_list_call' => true,
+ 'no_trailing_comma_in_singleline_array' => false,
+ 'no_trailing_whitespace' => true,
+ 'no_trailing_whitespace_in_comment' => true,
+ 'no_unneeded_control_parentheses' => [
+ 'break',
+ 'clone',
+ 'continue',
+ 'echo_print',
+ 'return',
+ 'switch_case',
+ 'yield',
+ ],
+ 'no_unreachable_default_argument_value' => false, // risky
+ 'no_unused_imports' => false,
+ 'no_useless_else' => true,
+ 'no_useless_return' => true,
+ 'no_whitespace_before_comma_in_array' => true,
+ 'no_whitespace_in_blank_line' => true,
+ 'normalize_index_brace' => true,
+ 'not_operator_with_space' => false,
+ 'not_operator_with_successor_space' => false,
+ 'object_operator_without_whitespace' => false,
+ /*
+ 'ordered_class_elements' => [
+ 'use_trait',
+ 'public',
+ 'protected',
+ 'private',
+ 'constant',
+ 'constant_public',
+ 'constant_protected',
+ 'constant_private',
+ //'property',
+ 'property_static',
+ 'property_public',
+ 'property_protected',
+ 'property_private',
+ 'property_public_static',
+ 'property_protected_static',
+ 'property_private_static',
+ 'construct',
+ //'method',
+ 'method_static',
+ 'method_public',
+ 'method_protected',
+ 'method_private',
+ 'method_public_static',
+ 'method_protected_static',
+ 'method_private_static',
+ 'destruct',
+ 'magic',
+ 'phpunit',
+ ],
+ */
+ 'ordered_imports' => true,
+ 'php_unit_construct' => false, // risky
+ 'php_unit_dedicate_assert' => false, // risky
+ 'php_unit_fqcn_annotation' => true,
+ 'php_unit_strict' => false, // risky
+ 'phpdoc_add_missing_param_annotation' => [],
+ 'phpdoc_align' => true,
+ 'phpdoc_annotation_without_dot' => true,
+ 'phpdoc_indent' => true,
+ 'phpdoc_inline_tag' => true,
+ 'phpdoc_no_access' => true,
+ 'phpdoc_no_alias_tag' => false,
+ 'phpdoc_no_empty_return' => false,
+ 'phpdoc_no_package' => true,
+ 'phpdoc_order' => true, // ?
+ 'phpdoc_scalar' => true,
+ 'phpdoc_separation' => true,
+ 'phpdoc_single_line_var_spacing' => true,
+ 'phpdoc_summary' => false,
+ 'phpdoc_to_comment' => true,
+ 'phpdoc_trim' => true,
+ 'phpdoc_types' => true,
+ 'phpdoc_var_without_name' => true,
+ 'pow_to_exponentiation' => false, // risky
+ 'pre_increment' => true,
+ 'protected_to_private' => false,
+ 'psr0' => false,// risky
+ 'psr4' => false,// risky
+ 'random_api_migration' => false, // risky
+ 'return_type_declaration' => true,
+ 'self_accessor' => true,
+ 'semicolon_after_instruction' => true,
+ 'short_scalar_cast' => true,
+ 'silenced_deprecation_error' => false, // risky
+ 'simplified_null_return' => false, // risky
+ 'single_blank_line_at_eof' => true,
+ 'single_blank_line_before_namespace' => true,
+ 'single_class_element_per_statement' => ['property', 'const'],
+ 'single_import_per_statement' => true,
+ 'single_line_after_imports' => true,
+ 'single_quote' => true,
+ 'space_after_semicolon' => true,
+ 'standardize_not_equals' => true,
+ 'strict_comparison' => false, // risky
+ 'strict_param' => false, // risky
+ 'switch_case_semicolon_to_colon' => true,
+ 'switch_case_space' => true,
+ 'ternary_operator_spaces' => true,
+ 'trailing_comma_in_multiline_array' => true,
+ 'trim_array_spaces' => true,
+ 'unary_operator_spaces' => true,
+ 'visibility_required' => [
+ 'property',
+ 'method',
+ //'const'
+ ],
+ 'whitespace_after_comma_in_array' => true,
+
+ ]
+ )
+ ;
\ No newline at end of file
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
index 07bb643..fd8b30f 100644
--- a/.scrutinizer.yml
+++ b/.scrutinizer.yml
@@ -1,6 +1,3 @@
build:
environment:
- php: '5.6.0'
-
-before_commands:
- - "composer install --prefer-source"
+ php: '7.1'
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..df917bc
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,20 @@
+language: php
+php:
+ - '7.1'
+
+before_script:
+ - composer self-update
+ - wget https://scrutinizer-ci.com/ocular.phar
+
+install: composer update --prefer-source $COMPOSER_FLAGS --no-interaction
+
+script:
+- ./vendor/bin/phpunit --coverage-clover=build/logs/clover.xml
+
+notifications:
+ email:
+ - tech@webservices.nl
+ slack: webservicesnl:pu5cpnpMCo2HXxPlN29DqHwU
+
+after_script:
+- php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 9c04525..2b93d77 100644
--- a/composer.json
+++ b/composer.json
@@ -14,16 +14,19 @@
},
"type": "library",
"require": {
- "php": "^5.4 || ^7.0",
+ "php": "^5.4 || ^7",
"doctrine/collections": "^1.3",
"psr/http-message": "^1.0",
- "psr/log": "^1.0"
+ "psr/log": "^1.0",
+ "roave/security-advisories": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "^5",
"mockery/mockery": "^0.9.4",
"league/factory-muffin": "^2.1",
- "league/factory-muffin-faker": "~1.0-beta"
+ "league/factory-muffin-faker": "~1.0-beta",
+ "sensiolabs/security-checker": "^4",
+ "friendsofphp/php-cs-fixer": "^2.0"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..01b6f5e
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,2988 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "2cb720c661d6818175c8b9e6eca430f4",
+ "packages": [
+ {
+ "name": "doctrine/collections",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/collections.git",
+ "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
+ "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "~0.1@dev",
+ "phpunit/phpunit": "^5.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Collections\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Collections Abstraction library",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "array",
+ "collections",
+ "iterator"
+ ],
+ "time": "2017-07-22T10:37:32+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2016-10-10T12:19:37+00:00"
+ },
+ {
+ "name": "roave/security-advisories",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Roave/SecurityAdvisories.git",
+ "reference": "140175d0d4a71950b045fb87cc7d979340b9f16e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/140175d0d4a71950b045fb87cc7d979340b9f16e",
+ "reference": "140175d0d4a71950b045fb87cc7d979340b9f16e",
+ "shasum": ""
+ },
+ "conflict": {
+ "adodb/adodb-php": "<5.20.6",
+ "amphp/artax": ">=2,<2.0.6|<1.0.6",
+ "aws/aws-sdk-php": ">=3,<3.2.1",
+ "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
+ "cakephp/cakephp": ">=3,<3.0.15|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=1.3,<1.3.18|>=2.7,<2.7.6|>=3.1,<3.1.4",
+ "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
+ "cartalyst/sentry": "<2.1",
+ "codeigniter/framework": "<=3.0.6",
+ "composer/composer": "<=1.0.0-alpha11",
+ "contao-components/mediaelement": ">=2.14.2,<2.21.1",
+ "contao/core": ">=2,<3.5.28",
+ "contao/core-bundle": ">=4,<4.4.1",
+ "doctrine/annotations": ">=1,<1.2.7",
+ "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
+ "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
+ "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
+ "doctrine/doctrine-bundle": "<1.5.2",
+ "doctrine/doctrine-module": "<=0.7.1",
+ "doctrine/mongodb-odm": ">=1,<1.0.2",
+ "doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
+ "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
+ "dompdf/dompdf": ">=0.6,<0.6.2",
+ "drupal/core": ">=8,<8.3.7",
+ "drupal/drupal": ">=8,<8.3.7",
+ "ezsystems/ezpublish-legacy": ">=2017.8,<2017.8.1.1|>=5.4,<5.4.10.1|>=5.3,<5.3.12.2",
+ "firebase/php-jwt": "<2",
+ "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
+ "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
+ "gregwar/rst": "<1.0.3",
+ "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1",
+ "illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26",
+ "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29",
+ "joomla/session": "<1.3.1",
+ "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29",
+ "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
+ "magento/magento1ce": ">=1.5.0.1,<1.9.3.2",
+ "magento/magento1ee": ">=1.9,<1.14.3.2",
+ "magento/magento2ce": ">=2,<2.2",
+ "monolog/monolog": ">=1.8,<1.12",
+ "namshi/jose": "<2.2",
+ "onelogin/php-saml": "<2.10.4",
+ "oro/crm": ">=1.7,<1.7.4",
+ "oro/platform": ">=1.7,<1.7.4",
+ "phpmailer/phpmailer": ">=5,<5.2.24",
+ "pusher/pusher-php-server": "<2.2.1",
+ "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
+ "shopware/shopware": "<4.4|>=5,<5.2.16",
+ "silverstripe/cms": ">=3.1,<3.1.11|>=3,<=3.0.11",
+ "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
+ "silverstripe/framework": ">=3,<3.3",
+ "silverstripe/userforms": "<3",
+ "simplesamlphp/saml2": "<1.8.1|>=1.9,<1.9.1|>=1.10,<1.10.3|>=2,<2.3.3",
+ "simplesamlphp/simplesamlphp": "<1.14.16",
+ "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
+ "socalnick/scn-social-auth": "<1.15.2",
+ "squizlabs/php_codesniffer": ">=1,<2.8.1",
+ "swiftmailer/swiftmailer": ">=4,<5.4.5",
+ "symfony/dependency-injection": ">=2,<2.0.17",
+ "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.7",
+ "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2",
+ "symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6",
+ "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8",
+ "symfony/routing": ">=2,<2.0.19",
+ "symfony/security": ">=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5|>=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9",
+ "symfony/security-core": ">=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5|>=2.8,<2.8.6|>=3,<3.0.6|>=2.4,<2.6.13|>=2.7,<2.7.9",
+ "symfony/security-http": ">=2.4,<2.7.13|>=2.3,<2.3.41|>=2.8,<2.8.6|>=3,<3.0.6",
+ "symfony/serializer": ">=2,<2.0.11",
+ "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.13|>=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5|>=2.8,<2.8.6|>=3,<3.0.6",
+ "symfony/translation": ">=2,<2.0.17",
+ "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
+ "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
+ "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
+ "thelia/backoffice-default-template": ">=2.1,<2.1.2",
+ "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2",
+ "twig/twig": "<1.20",
+ "typo3/cms": ">=6.2,<6.2.30|>=8,<8.7.5|>=7,<7.6.22",
+ "typo3/flow": ">=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5|>=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1",
+ "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
+ "willdurand/js-translation-bundle": "<2.1.1",
+ "yiisoft/yii": ">=1.1.14,<1.1.15",
+ "yiisoft/yii2": "<2.0.5",
+ "yiisoft/yii2-bootstrap": "<2.0.4",
+ "yiisoft/yii2-dev": "<2.0.4",
+ "yiisoft/yii2-gii": "<2.0.4",
+ "yiisoft/yii2-jui": "<2.0.4",
+ "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
+ "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
+ "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
+ "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
+ "zendframework/zend-diactoros": ">=1,<1.0.4",
+ "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1",
+ "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
+ "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
+ "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
+ "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
+ "zendframework/zend-validator": ">=2.3,<2.3.6",
+ "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
+ "zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1",
+ "zendframework/zendframework1": "<1.12.20",
+ "zendframework/zendopenid": ">=2,<2.0.2",
+ "zendframework/zendxml": ">=1,<1.0.1",
+ "zf-commons/zfc-user": "<1.2.2",
+ "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
+ "zfr/zfr-oauth2-server-module": "<0.1.2"
+ },
+ "type": "metapackage",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "role": "maintainer"
+ }
+ ],
+ "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
+ "time": "2017-09-11T12:05:25+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "composer/ca-bundle",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/ca-bundle.git",
+ "reference": "9dd73a03951357922d8aee6cc084500de93e2343"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/9dd73a03951357922d8aee6cc084500de93e2343",
+ "reference": "9dd73a03951357922d8aee6cc084500de93e2343",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "ext-pcre": "*",
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5",
+ "psr/log": "^1.0",
+ "symfony/process": "^2.5 || ^3.0"
+ },
+ "suggest": {
+ "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\CaBundle\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+ "keywords": [
+ "cabundle",
+ "cacert",
+ "certificate",
+ "ssl",
+ "tls"
+ ],
+ "time": "2017-09-11T07:24:36+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "1.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573",
+ "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5",
+ "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "time": "2016-08-30T16:08:34+00:00"
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5beebb01b025c94e93686b7a0ed3edae81fe3e7f",
+ "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "^5.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "time": "2017-07-22T10:58:02+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "^6.2.3",
+ "squizlabs/php_codesniffer": "^3.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2017-07-22T11:58:36+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Lexer\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "lexer",
+ "parser"
+ ],
+ "time": "2014-09-09T13:34:57+00:00"
+ },
+ {
+ "name": "friendsofphp/php-cs-fixer",
+ "version": "v2.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
+ "reference": "5642a36a60c11cdd01488d192541a89bb44a4abf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/5642a36a60c11cdd01488d192541a89bb44a4abf",
+ "reference": "5642a36a60c11cdd01488d192541a89bb44a4abf",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^1.4",
+ "doctrine/annotations": "^1.2",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "gecko-packages/gecko-php-unit": "^2.0",
+ "php": "^5.6 || >=7.0 <7.2",
+ "sebastian/diff": "^1.4",
+ "symfony/console": "^3.2",
+ "symfony/event-dispatcher": "^3.0",
+ "symfony/filesystem": "^3.0",
+ "symfony/finder": "^3.0",
+ "symfony/options-resolver": "^3.0",
+ "symfony/polyfill-php70": "^1.0",
+ "symfony/polyfill-php72": "^1.4",
+ "symfony/process": "^3.0",
+ "symfony/stopwatch": "^3.0"
+ },
+ "conflict": {
+ "hhvm": "*"
+ },
+ "require-dev": {
+ "johnkary/phpunit-speedtrap": "^1.1",
+ "justinrainbow/json-schema": "^5.0",
+ "php-cs-fixer/accessible-object": "^1.0",
+ "phpunit/phpunit": "^4.8.35 || ^5.4.3",
+ "satooshi/php-coveralls": "^1.0",
+ "symfony/phpunit-bridge": "^3.2.2"
+ },
+ "suggest": {
+ "ext-mbstring": "For handling non-UTF8 characters in cache signature.",
+ "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
+ },
+ "bin": [
+ "php-cs-fixer"
+ ],
+ "type": "application",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpCsFixer\\": "src/"
+ },
+ "classmap": [
+ "tests/Test/Assert/AssertTokensTrait.php",
+ "tests/Test/AbstractFixerTestCase.php",
+ "tests/Test/AbstractIntegrationTestCase.php",
+ "tests/Test/IntegrationCase.php",
+ "tests/Test/IntegrationCaseFactory.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dariusz Rumiński",
+ "email": "dariusz.ruminski@gmail.com"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "A tool to automatically fix PHP code style",
+ "time": "2017-09-11T15:23:20+00:00"
+ },
+ {
+ "name": "fzaninotto/faker",
+ "version": "v1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fzaninotto/Faker.git",
+ "reference": "010c7efedd88bf31141a02719f51fb44c732d5a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/010c7efedd88bf31141a02719f51fb44c732d5a0",
+ "reference": "010c7efedd88bf31141a02719f51fb44c732d5a0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~1.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": []
+ },
+ "autoload": {
+ "psr-0": {
+ "Faker": "src/",
+ "Faker\\PHPUnit": "test/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "François Zaninotto"
+ }
+ ],
+ "description": "Faker is a PHP library that generates fake data for you.",
+ "keywords": [
+ "data",
+ "faker",
+ "fixtures"
+ ],
+ "time": "2014-06-04T14:43:02+00:00"
+ },
+ {
+ "name": "gecko-packages/gecko-php-unit",
+ "version": "v2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/GeckoPackages/GeckoPHPUnit.git",
+ "reference": "ab525fac9a9ffea219687f261b02008b18ebf2d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/ab525fac9a9ffea219687f261b02008b18ebf2d1",
+ "reference": "ab525fac9a9ffea219687f261b02008b18ebf2d1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.4.3"
+ },
+ "suggest": {
+ "ext-dom": "When testing with xml.",
+ "ext-libxml": "When testing with xml.",
+ "phpunit/phpunit": "This is an extension for it so make sure you have it some way."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "GeckoPackages\\PHPUnit\\": "src/PHPUnit"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Additional PHPUnit asserts and constraints.",
+ "homepage": "https://github.com/GeckoPackages",
+ "keywords": [
+ "extension",
+ "filesystem",
+ "phpunit"
+ ],
+ "time": "2017-08-23T07:39:54+00:00"
+ },
+ {
+ "name": "hamcrest/hamcrest-php",
+ "version": "v1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
+ "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c",
+ "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "replace": {
+ "cordoval/hamcrest-php": "*",
+ "davedevelopment/hamcrest-php": "*",
+ "kodova/hamcrest-php": "*"
+ },
+ "require-dev": {
+ "phpunit/php-file-iterator": "1.3.3",
+ "satooshi/php-coveralls": "dev-master"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "hamcrest"
+ ],
+ "files": [
+ "hamcrest/Hamcrest.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD"
+ ],
+ "description": "This is the PHP port of Hamcrest Matchers",
+ "keywords": [
+ "test"
+ ],
+ "time": "2015-05-11T14:41:42+00:00"
+ },
+ {
+ "name": "league/factory-muffin",
+ "version": "v2.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/factory-muffin.git",
+ "reference": "91f0adcdac6b5f7bf2277ac2c90f94352afe65de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/factory-muffin/zipball/91f0adcdac6b5f7bf2277ac2c90f94352afe65de",
+ "reference": "91f0adcdac6b5f7bf2277ac2c90f94352afe65de",
+ "shasum": ""
+ },
+ "require": {
+ "fzaninotto/faker": "1.4.*",
+ "php": ">=5.3.3"
+ },
+ "replace": {
+ "zizaco/factory-muff": "self.version"
+ },
+ "require-dev": {
+ "illuminate/database": "~4.1",
+ "phpunit/phpunit": "~4.0"
+ },
+ "suggest": {
+ "illuminate/database": "Factory Muffin works well with eloquent models."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\FactoryMuffin\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "graham@mineuk.com"
+ },
+ {
+ "name": "Zizaco Zizuini",
+ "email": "zizaco@gmail.com"
+ },
+ {
+ "name": "Scott Robertson",
+ "email": "scottymeuk@gmail.com"
+ }
+ ],
+ "description": "The goal of this package is to enable the rapid creation of objects for the purpose of testing.",
+ "homepage": "http://factory-muffin.thephpleague.com/",
+ "keywords": [
+ "factory",
+ "laravel",
+ "testing"
+ ],
+ "time": "2014-09-18T18:29:06+00:00"
+ },
+ {
+ "name": "league/factory-muffin-faker",
+ "version": "v1.0.0-beta1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/factory-muffin-faker.git",
+ "reference": "891974631fb0a67947156a9fd86db5ec36d7e4fb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/factory-muffin-faker/zipball/891974631fb0a67947156a9fd86db5ec36d7e4fb",
+ "reference": "891974631fb0a67947156a9fd86db5ec36d7e4fb",
+ "shasum": ""
+ },
+ "require": {
+ "fzaninotto/faker": "1.4.*",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\FactoryMuffin\\Faker\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "graham@mineuk.com"
+ },
+ {
+ "name": "Scott Robertson",
+ "email": "scottymeuk@gmail.com"
+ }
+ ],
+ "description": "The goal of this package is to wrap faker to make it super easy to use with factory muffin.",
+ "homepage": "http://factory-muffin.thephpleague.com/",
+ "keywords": [
+ "factory",
+ "faker",
+ "testing"
+ ],
+ "time": "2014-12-22T20:14:26+00:00"
+ },
+ {
+ "name": "mockery/mockery",
+ "version": "0.9.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mockery/mockery.git",
+ "reference": "6fdb61243844dc924071d3404bb23994ea0b6856"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/6fdb61243844dc924071d3404bb23994ea0b6856",
+ "reference": "6fdb61243844dc924071d3404bb23994ea0b6856",
+ "shasum": ""
+ },
+ "require": {
+ "hamcrest/hamcrest-php": "~1.1",
+ "lib-pcre": ">=7.0",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.9.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Mockery": "library/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Pádraic Brady",
+ "email": "padraic.brady@gmail.com",
+ "homepage": "http://blog.astrumfutura.com"
+ },
+ {
+ "name": "Dave Marshall",
+ "email": "dave.marshall@atstsolutions.co.uk",
+ "homepage": "http://davedevelopment.co.uk"
+ }
+ ],
+ "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.",
+ "homepage": "http://github.com/padraic/mockery",
+ "keywords": [
+ "BDD",
+ "TDD",
+ "library",
+ "mock",
+ "mock objects",
+ "mockery",
+ "stub",
+ "test",
+ "test double",
+ "testing"
+ ],
+ "time": "2017-02-28T12:52:32+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102",
+ "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "1.*",
+ "phpunit/phpunit": "~4.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "homepage": "https://github.com/myclabs/DeepCopy",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "time": "2017-04-12T18:52:22+00:00"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v2.0.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d",
+ "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/random.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "pseudorandom",
+ "random"
+ ],
+ "time": "2017-03-13T16:27:32+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2d3d238c433cf69caeb4842e97a3223a116f94b2",
+ "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0@dev",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2017-08-30T18:51:59+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2017-07-14T14:27:02+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.7.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6",
+ "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "sebastian/comparator": "^1.1|^2.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5|^3.2",
+ "phpunit/phpunit": "^4.8 || ^5.6.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Prophecy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2017-09-04T11:05:03+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "4.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^5.6 || ^7.0",
+ "phpunit/php-file-iterator": "^1.3",
+ "phpunit/php-text-template": "^1.2",
+ "phpunit/php-token-stream": "^1.4.2 || ^2.0",
+ "sebastian/code-unit-reverse-lookup": "^1.0",
+ "sebastian/environment": "^1.3.2 || ^2.0",
+ "sebastian/version": "^1.0 || ^2.0"
+ },
+ "require-dev": {
+ "ext-xdebug": "^2.1.4",
+ "phpunit/phpunit": "^5.7"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.5.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2017-04-02T07:44:40+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2016-10-03T07:40:28+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21T13:50:34+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2017-02-26T11:10:40+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0",
+ "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2017-08-20T05:47:52+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "5.7.22",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "10df877596c9906d4110b5b905313829043f2ada"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/10df877596c9906d4110b5b905313829043f2ada",
+ "reference": "10df877596c9906d4110b5b905313829043f2ada",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "~1.3",
+ "php": "^5.6 || ^7.0",
+ "phpspec/prophecy": "^1.6.2",
+ "phpunit/php-code-coverage": "^4.0.4",
+ "phpunit/php-file-iterator": "~1.4",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-timer": "^1.0.6",
+ "phpunit/phpunit-mock-objects": "^3.2",
+ "sebastian/comparator": "^1.2.4",
+ "sebastian/diff": "^1.4.3",
+ "sebastian/environment": "^1.3.4 || ^2.0",
+ "sebastian/exporter": "~2.0",
+ "sebastian/global-state": "^1.1",
+ "sebastian/object-enumerator": "~2.0",
+ "sebastian/resource-operations": "~1.0",
+ "sebastian/version": "~1.0.3|~2.0",
+ "symfony/yaml": "~2.1|~3.0"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "~1.1"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.7.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2017-09-24T07:23:38+00:00"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "3.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.6 || ^7.0",
+ "phpunit/php-text-template": "^1.2",
+ "sebastian/exporter": "^1.2 || ^2.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.4"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "time": "2017-06-30T09:13:00+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2017-03-04T06:30:41+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "1.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/diff": "~1.2",
+ "sebastian/exporter": "~1.2 || ~2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2017-01-29T09:50:25+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "1.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ],
+ "time": "2017-05-22T07:24:03+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2016-11-26T07:53:53+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/recursion-context": "~2.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2016-11-19T08:54:04+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2015-10-12T03:26:01+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6",
+ "sebastian/recursion-context": "~2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2017-02-18T15:18:39+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2016-11-19T07:33:16+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2015-07-28T20:34:47+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-10-03T07:35:21+00:00"
+ },
+ {
+ "name": "sensiolabs/security-checker",
+ "version": "v4.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/security-checker.git",
+ "reference": "55553c3ad6ae2121c1b1475d4c880d71b31b8f68"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/55553c3ad6ae2121c1b1475d4c880d71b31b8f68",
+ "reference": "55553c3ad6ae2121c1b1475d4c880d71b31b8f68",
+ "shasum": ""
+ },
+ "require": {
+ "composer/ca-bundle": "^1.0",
+ "symfony/console": "~2.7|~3.0"
+ },
+ "bin": [
+ "security-checker"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "SensioLabs\\Security": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "A security checker for your composer.lock",
+ "time": "2017-08-22T22:18:16+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "a1e1b01293a090cb9ae2ddd221a3251a4a7e4abf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a1e1b01293a090cb9ae2ddd221a3251a4a7e4abf",
+ "reference": "a1e1b01293a090cb9ae2ddd221a3251a4a7e4abf",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/debug": "~2.8|~3.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.3",
+ "symfony/dependency-injection": "~3.3",
+ "symfony/event-dispatcher": "~2.8|~3.0",
+ "symfony/filesystem": "~2.8|~3.0",
+ "symfony/process": "~2.8|~3.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/filesystem": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-09-06T16:40:18+00:00"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "8beb24eec70b345c313640962df933499373a944"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/8beb24eec70b345c313640962df933499373a944",
+ "reference": "8beb24eec70b345c313640962df933499373a944",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "~2.8|~3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-09-01T13:23:39+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "54ca9520a00386f83bca145819ad3b619aaa2485"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/54ca9520a00386f83bca145819ad3b619aaa2485",
+ "reference": "54ca9520a00386f83bca145819ad3b619aaa2485",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~2.8|~3.0",
+ "symfony/dependency-injection": "~3.3",
+ "symfony/expression-language": "~2.8|~3.0",
+ "symfony/stopwatch": "~2.8|~3.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-07-29T21:54:42+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "b32a0e5f928d0fa3d1dd03c78d020777e50c10cb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/b32a0e5f928d0fa3d1dd03c78d020777e50c10cb",
+ "reference": "b32a0e5f928d0fa3d1dd03c78d020777e50c10cb",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-07-29T21:54:42+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "b2260dbc80f3c4198f903215f91a1ac7fe9fe09e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/b2260dbc80f3c4198f903215f91a1ac7fe9fe09e",
+ "reference": "b2260dbc80f3c4198f903215f91a1ac7fe9fe09e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-07-29T21:54:42+00:00"
+ },
+ {
+ "name": "symfony/options-resolver",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "ee4e22978fe885b54ee5da8c7964f0a5301abfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ee4e22978fe885b54ee5da8c7964f0a5301abfb6",
+ "reference": "ee4e22978fe885b54ee5da8c7964f0a5301abfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony OptionsResolver Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "time": "2017-07-29T21:54:42+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
+ "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2017-06-14T15:44:48+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php70",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php70.git",
+ "reference": "b6482e68974486984f59449ecea1fbbb22ff840f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/b6482e68974486984f59449ecea1fbbb22ff840f",
+ "reference": "b6482e68974486984f59449ecea1fbbb22ff840f",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "~1.0|~2.0",
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php70\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2017-06-14T15:44:48+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "8abc9097f5001d310f0edba727469c988acc6ea7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8abc9097f5001d310f0edba727469c988acc6ea7",
+ "reference": "8abc9097f5001d310f0edba727469c988acc6ea7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2017-07-11T13:25:55+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "b7666e9b438027a1ea0e1ee813ec5042d5d7f6f0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/b7666e9b438027a1ea0e1ee813ec5042d5d7f6f0",
+ "reference": "b7666e9b438027a1ea0e1ee813ec5042d5d7f6f0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-07-29T21:54:42+00:00"
+ },
+ {
+ "name": "symfony/stopwatch",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "9a5610a8d6a50985a7be485c0ba745c22607beeb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/9a5610a8d6a50985a7be485c0ba745c22607beeb",
+ "reference": "9a5610a8d6a50985a7be485c0ba745c22607beeb",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Stopwatch Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-07-29T21:54:42+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "1d8c2a99c80862bdc3af94c1781bf70f86bccac0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/1d8c2a99c80862bdc3af94c1781bf70f86bccac0",
+ "reference": "1d8c2a99c80862bdc3af94c1781bf70f86bccac0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "require-dev": {
+ "symfony/console": "~2.8|~3.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2017-07-29T21:54:42+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f",
+ "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2016-11-23T20:04:58+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": {
+ "roave/security-advisories": 20,
+ "league/factory-muffin-faker": 10
+ },
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^5.4 || ^7"
+ },
+ "platform-dev": []
+}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 384301a..d2ae6b3 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -10,15 +10,14 @@
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false">
-
- ./test/
+ test
- ./src/
+ src
diff --git a/sonar-project.properties b/sonar-project.properties
new file mode 100644
index 0000000..4f438e1
--- /dev/null
+++ b/sonar-project.properties
@@ -0,0 +1,27 @@
+# Endpoint
+sonar.url=https://sonar.fdmg.org
+
+# Sonar project properties
+sonar.projectKey=nl.webservices.common
+sonar.projectName=webservices-nl/common
+
+# Gitlab project properties
+sonar.gitlab.project_id=webservices-nl/common
+
+# Comma-separated paths to directories with sources (required)
+sonar.sources=src
+
+# Encoding of the source files
+sonar.sourceEncoding=UTF-8
+
+# Tests and coverage
+sonar.tests=test
+sonar.php.tests.reportPath=report/phpunit/junit.xml
+sonar.php.coverage.reportPath=report/phpunit/clover.xml
+sonar.coverage.exclusions=test/**/*.php
+
+# Links
+sonar.links.homepage=https://gitlab.fdmg.org/webservices-nl/common
+sonar.links.ci=https://gitlab.fdmg.org/webservices-nl/common
+sonar.links.issue=https://jira.fdmg.org
+sonar.links.scm_dev=git@git.prod.sup.fdmg.org:webservices-nl/common.git
diff --git a/src/Common/Client/ClientFactoryInterface.php b/src/Common/Client/ClientFactoryInterface.php
index 48327c3..0093bf2 100644
--- a/src/Common/Client/ClientFactoryInterface.php
+++ b/src/Common/Client/ClientFactoryInterface.php
@@ -9,15 +9,14 @@
* Interface ClientFactoryInterface.
*
* Contract for ClientFactories used by the platform generator
- *
*/
interface ClientFactoryInterface extends LoggerAwareInterface
{
/**
* Initiate ClientFactory.
*
- * @param string $platform
- * @param LoggerInterface $logger
+ * @param string $platform
+ * @param LoggerInterface|null $logger
*
* @return static
*/
diff --git a/src/Common/Config/ConfigInterface.php b/src/Common/Config/ConfigInterface.php
index df3c181..585fc14 100644
--- a/src/Common/Config/ConfigInterface.php
+++ b/src/Common/Config/ConfigInterface.php
@@ -6,7 +6,6 @@
* Interface ConfigurableInterface.
*
* This is a generic interface for returning a declaration (config) object
- *
*/
interface ConfigInterface
{
diff --git a/src/Common/Endpoint/Endpoint.php b/src/Common/Endpoint/Endpoint.php
index 4c64215..1db8100 100644
--- a/src/Common/Endpoint/Endpoint.php
+++ b/src/Common/Endpoint/Endpoint.php
@@ -10,7 +10,6 @@
* Helper class for managing a Webservices' Endpoint. It is mainly used by the EndpointManager.
*
* @see Manager
- *
*/
class Endpoint
{
@@ -139,9 +138,9 @@ public function isError()
/**
* @param string $url
*
- * @return static
- *
* @throws \InvalidArgumentException
+ *
+ * @return static
*/
public static function createFromString($url)
{
diff --git a/src/Common/Endpoint/Manager.php b/src/Common/Endpoint/Manager.php
index bdd6a8a..9f84990 100644
--- a/src/Common/Endpoint/Manager.php
+++ b/src/Common/Endpoint/Manager.php
@@ -37,10 +37,10 @@ public function __construct()
*
* @param string $url
*
- * @return Endpoint
- *
* @throws InputException
* @throws \InvalidArgumentException
+ *
+ * @return Endpoint
*/
public function createEndpoint($url)
{
@@ -164,9 +164,9 @@ private function disableAll()
* Returns a active endpoint.
* Tries to find the current active endpoint, or enable one.
*
- * @return Endpoint
- *
* @throws NoServerAvailableException
+ *
+ * @return Endpoint
*/
public function getActiveEndpoint()
{
diff --git a/src/Common/Endpoint/Uri.php b/src/Common/Endpoint/Uri.php
index 4d60bbe..9cbb578 100644
--- a/src/Common/Endpoint/Uri.php
+++ b/src/Common/Endpoint/Uri.php
@@ -16,7 +16,6 @@
* \__/ \______________________/\_________/ \_________/ \__/
* | | | | |
* scheme authority path query fragment
- *
*/
class Uri implements UriInterface
{
@@ -39,7 +38,7 @@ class Uri implements UriInterface
private $host = '';
/**
- * Contains data, usually organized in hierarchical form, that appears as a sequence of segments separated by slashes.
+ * Contains data, usually organized in hierarchical form, that appears as a sequence of segments separated by slashes.
*
* @var string
*/
@@ -88,7 +87,7 @@ class Uri implements UriInterface
private $userInfo = '';
/**
- * @param string $uri URI to parse and wrap.
+ * @param string $uri URI to parse and wrap
*
* @throws \InvalidArgumentException
*/
@@ -106,7 +105,7 @@ public function __construct($uri = '')
/**
* Apply parse_url parts to a URI.
*
- * @param $parts array of parse_url parts to apply.
+ * @param $parts array of parse_url parts to apply
*
* @throws \InvalidArgumentException
*/
@@ -115,10 +114,16 @@ private function applyParts(array $parts = [])
$this->scheme = array_key_exists('scheme', $parts) ? $this->filterScheme($parts['scheme']) : null;
$this->userInfo = array_key_exists('user', $parts) ? $parts['user'] : null;
$this->host = array_key_exists('host', $parts) ? $parts['host'] : null;
- $this->port = array_key_exists('port', $parts) ? $this->filterPort($this->getScheme(), $this->getHost(), $parts['port']) : null;
+ $this->port = array_key_exists('port', $parts) ? $this->filterPort(
+ $this->getScheme(),
+ $this->getHost(),
+ $parts['port']
+ ) : null;
$this->path = array_key_exists('path', $parts) ? $this->filterPath($parts['path']) : null;
$this->query = array_key_exists('query', $parts) ? $this->filterQueryAndFragment($parts['query']) : null;
- $this->fragment = array_key_exists('fragment', $parts) ? $this->filterQueryAndFragment($parts['fragment']) : null;
+ $this->fragment = array_key_exists('fragment', $parts) ? $this->filterQueryAndFragment(
+ $parts['fragment']
+ ) : null;
$this->userInfo .= array_key_exists('pass', $parts) ? ':' . $parts['pass'] : null;
}
@@ -131,10 +136,7 @@ private function applyParts(array $parts = [])
*/
private function filterScheme($scheme)
{
- $scheme = strtolower($scheme);
- $scheme = rtrim($scheme, ':/');
-
- return $scheme;
+ return strtolower(rtrim($scheme, ':/'));
}
/**
@@ -144,9 +146,9 @@ private function filterScheme($scheme)
* @param string $host
* @param int $port
*
- * @return int|null
+ * @throws \InvalidArgumentException if the port is invalid
*
- * @throws \InvalidArgumentException if the port is invalid.
+ * @return int|null
*/
private function filterPort($scheme, $host, $port)
{
@@ -164,8 +166,8 @@ private function filterPort($scheme, $host, $port)
* Is a given port standard for the current scheme?
*
* @param int $port
- * @param string $scheme
- * @param string $host
+ * @param string|null $scheme
+ * @param string|null $host
*
* @return bool
*/
@@ -175,7 +177,7 @@ private static function isStandardPort($port, $scheme = null, $host = null)
return false;
}
- return array_key_exists($scheme, static::$schemes) && $port === static::$schemes[$scheme];
+ return array_key_exists($scheme, self::$schemes) && $port === static::$schemes[$scheme];
}
/**
@@ -185,7 +187,7 @@ private static function isStandardPort($port, $scheme = null, $host = null)
*
* @see https://tools.ietf.org/html/rfc3986#section-3.1
*
- * @return string string The URI scheme.
+ * @return string string The URI scheme
*/
public function getScheme()
{
@@ -199,7 +201,7 @@ public function getScheme()
*
* @see http://tools.ietf.org/html/rfc3986#section-3.2.2
*
- * @return string The URI host.
+ * @return string the URI host
*/
public function getHost()
{
@@ -246,9 +248,9 @@ private function filterQueryAndFragment($str)
*
* Note: this function will convert "=" to "%3D" and "&" to "%26".
*
- * @param UriInterface $uri URI to use as base.
- * @param string $key Key to set.
- * @param string $value Value to set.
+ * @param UriInterface $uri URI to use as base
+ * @param string $key key to set
+ * @param string $value value to set
*
* @throws \InvalidArgumentException
*
@@ -301,19 +303,19 @@ public static function resolve(UriInterface $base, $rel = null)
}
$relParts = [
- 'scheme' => $rel->getScheme(),
+ 'scheme' => $rel->getScheme(),
'authority' => $rel->getAuthority(),
- 'path' => $rel->getPath(),
- 'query' => $rel->getQuery(),
- 'fragment' => $rel->getFragment(),
+ 'path' => $rel->getPath(),
+ 'query' => $rel->getQuery(),
+ 'fragment' => $rel->getFragment(),
];
$parts = [
- 'scheme' => $base->getScheme(),
+ 'scheme' => $base->getScheme(),
'authority' => $base->getAuthority(),
- 'path' => $base->getPath(),
- 'query' => $base->getQuery(),
- 'fragment' => $base->getFragment(),
+ 'path' => $base->getPath(),
+ 'query' => $base->getQuery(),
+ 'fragment' => $base->getFragment(),
];
if (!empty($relParts['path'])) {
@@ -334,13 +336,15 @@ public static function resolve(UriInterface $base, $rel = null)
$parts['fragment'] = $relParts['fragment'];
}
- return new self(static::createUriString(
- $parts['scheme'],
- $parts['authority'],
- $parts['path'],
- $parts['query'],
- $parts['fragment']
- ));
+ return new self(
+ self::createUriString(
+ $parts['scheme'],
+ $parts['authority'],
+ $parts['path'],
+ $parts['query'],
+ $parts['fragment']
+ )
+ );
}
/**
@@ -392,8 +396,8 @@ public static function removeDotSegments($path)
*
* Note: this function will convert "=" to "%3D" and "&" to "%26".
*
- * @param UriInterface $uri URI to use as a base.
- * @param string $key Query string key value pair to remove.
+ * @param UriInterface $uri URI to use as a base
+ * @param string $key query string key value pair to remove
*
* @throws \InvalidArgumentException
*
@@ -420,10 +424,14 @@ public static function withoutQueryValue(UriInterface $uri, $key)
*
* {@inheritdoc}
*
- * @return null|int The URI port.
+ * @return null|int the URI port
*/
public function getPort()
{
+ if ($this->port === null && array_key_exists($this->getScheme(), self::$schemes)) {
+ return self::$schemes[$this->getScheme()];
+ }
+
return $this->port;
}
@@ -448,9 +456,9 @@ public function withFragment($fragment)
/**
* @param string $query
*
- * @return UriInterface
- *
* @throws \InvalidArgumentException
+ *
+ * @return UriInterface
*/
public function withQuery($query)
{
@@ -530,7 +538,7 @@ public function withPath($path)
*
* {@inheritdoc}
*
- * @param string $scheme The scheme to use with the new instance.
+ * @param string $scheme the scheme to use with the new instance
*
* @throws \InvalidArgumentException
*
@@ -558,7 +566,7 @@ public function withScheme($scheme)
public function withUserInfo($user, $password = null)
{
$info = $user;
- if ($password) {
+ if ($password !== null) {
$info .= ':' . $password;
}
@@ -606,11 +614,11 @@ public function __toString()
/**
* Create a URI string from its various parts.
*
- * @param string $scheme
- * @param string $authority
- * @param string $path
- * @param string $query
- * @param string $fragment
+ * @param string|null $scheme
+ * @param string|null $authority
+ * @param string|null $path
+ * @param string|null $query
+ * @param string|null $fragment
*
* @return string
*/
@@ -665,7 +673,7 @@ private static function createUriString(
*
* @see https://tools.ietf.org/html/rfc3986#section-3.2
*
- * @return string The URI authority, in "[user-info@]host[:port]" format.
+ * @return string the URI authority, in "[user-info@]host[:port]" format
*/
public function getAuthority()
{
@@ -690,7 +698,7 @@ public function getAuthority()
*
* {@inheritdoc}
*
- * @return string The URI user information, in "username[:password]" format.
+ * @return string the URI user information, in "username[:password]" format
*/
public function getUserInfo()
{
@@ -705,7 +713,7 @@ public function getUserInfo()
* @see https://tools.ietf.org/html/rfc3986#section-2
* @see https://tools.ietf.org/html/rfc3986#section-3.3
*
- * @return string The URI path.
+ * @return string the URI path
*/
public function getPath()
{
@@ -730,7 +738,7 @@ public function getQuery()
* @see https://tools.ietf.org/html/rfc3986#section-2
* @see https://tools.ietf.org/html/rfc3986#section-3.5
*
- * @return string The URI fragment.
+ * @return string the URI fragment
*/
public function getFragment()
{
diff --git a/src/Common/Exception/Server/Data/PageNotFoundException.php b/src/Common/Exception/Server/Data/PageNotFoundException.php
index 843a55d..7a0f497 100644
--- a/src/Common/Exception/Server/Data/PageNotFoundException.php
+++ b/src/Common/Exception/Server/Data/PageNotFoundException.php
@@ -6,7 +6,6 @@
/**
* Class PageNotFoundException.
- *
*/
class PageNotFoundException extends DataException
{
diff --git a/test/Common/Endpoint/UriTest.php b/test/Common/Endpoint/UriTest.php
index 3067fce..4df8de2 100644
--- a/test/Common/Endpoint/UriTest.php
+++ b/test/Common/Endpoint/UriTest.php
@@ -9,27 +9,24 @@
*/
class UriTest extends \PHPUnit_Framework_TestCase
{
- /**
- *
- */
const RFC3986_BASE = 'http://a/b/c/d;p?q';
/**
- * @throws \InvalidArgumentException
+ * @dataProvider getSomeUrls()
*/
- public function testParsesProvidedUrl()
+ public function testParsesProvidedHttpsUrl($url, $parts)
{
- $uri = new Uri('https://johndoe:secret@mydomain.com:443/path/123?q=abc#test');
+ $uri = new Uri($url);
// Standard port 443 for https gets ignored.
- self::assertEquals('https://johndoe:secret@mydomain.com/path/123?q=abc#test', (string) $uri);
- self::assertEquals('test', $uri->getFragment());
- self::assertEquals('mydomain.com', $uri->getHost());
- self::assertEquals('/path/123', $uri->getPath());
- self::assertEquals(null, $uri->getPort());
- self::assertEquals('q=abc', $uri->getQuery());
- self::assertEquals('https', $uri->getScheme());
- self::assertEquals('johndoe:secret', $uri->getUserInfo());
+ self::assertEquals($parts['url'], (string) $uri, 'url without port should match');
+ self::assertEquals($parts['fragment'], $uri->getFragment(), 'Fragment should match');
+ self::assertEquals($parts['host'], $uri->getHost(), 'hosts should match');
+ self::assertEquals($parts['path'], $uri->getPath());
+ self::assertEquals($parts['port'], $uri->getPort());
+ self::assertEquals($parts['query'], $uri->getQuery());
+ self::assertEquals($parts['scheme'], $uri->getScheme());
+ self::assertEquals($parts['userinfo'], $uri->getUserInfo());
}
public function testChangePort()
@@ -42,13 +39,13 @@ public function testChangePort()
}
/**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Unable to parse URI
- *
* @throws \InvalidArgumentException
*/
public function testValidatesUriCanBeParsed()
{
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Unable to parse URI');
+
new Uri('///');
}
@@ -96,44 +93,42 @@ public function testWithUserInfo()
}
/**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Invalid port: 100000. Must be between 1 and 65535
- *
* @throws \InvalidArgumentException
*/
public function testPortMustBeLowerThan()
{
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Invalid port: 100000. Must be between 1 and 65535');
+
(new Uri(''))->withPort(100000);
}
/**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Invalid port: 0. Must be between 1 and 65535
- *
* @throws \InvalidArgumentException
*/
public function testPortMustBeGreaterThan()
{
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Invalid port: 0. Must be between 1 and 65535');
+
(new Uri(''))->withPort(0);
}
/**
- * @expectedException \InvalidArgumentException
- *
* @throws \InvalidArgumentException
*/
public function testPathMustBeValid()
{
+ $this->expectException(\InvalidArgumentException::class);
(new Uri(''))->withPath([]);
}
/**
- * @expectedException \InvalidArgumentException
- *
* @throws \InvalidArgumentException
*/
public function testQueryMustBeValid()
{
+ $this->expectException(\InvalidArgumentException::class);
(new Uri(''))->withQuery(new \stdClass());
}
@@ -182,7 +177,7 @@ public function testResolvesUris($base, $rel, $expected)
public function getResolveTestCases()
{
return [
-// [self::RFC3986_BASE, 'g:h', 'g:h'],
+ //[self::RFC3986_BASE, 'g:h', 'g:h'],
[self::RFC3986_BASE, 'g', 'http://a/b/c/g'],
[self::RFC3986_BASE, './g', 'http://a/b/c/g'],
[self::RFC3986_BASE, 'g/', 'http://a/b/c/g/'],
@@ -372,14 +367,101 @@ public function pathTestNoAuthority()
}
/**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Unable to parse URI
- *
* @throws \InvalidArgumentException
*/
public function testNoAuthorityWithInvalidPath()
{
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Unable to parse URI');
+
$input = 'urn://example:animal:ferret:nose';
new Uri($input);
}
+
+ /**
+ * @return array
+ */
+ public function getSomeUrls()
+ {
+ return [
+ [
+ 'https://johndoe:secret@mydomain.com:443/path/123?q=abc#test',
+ [
+ 'url' => 'https://johndoe:secret@mydomain.com/path/123?q=abc#test',
+ 'fragment' => 'test',
+ 'host' => 'mydomain.com',
+ 'path' => '/path/123',
+ 'port' => 443,
+ 'query' => 'q=abc',
+ 'scheme' => 'https',
+ 'userinfo' => 'johndoe:secret',
+ ],
+ ],
+ [
+ 'http://johndoe:secret@mydomain.com/path/123?q=abc#test',
+ [
+ 'url' => 'http://johndoe:secret@mydomain.com/path/123?q=abc#test',
+ 'fragment' => 'test',
+ 'host' => 'mydomain.com',
+ 'path' => '/path/123',
+ 'port' => 80,
+ 'query' => 'q=abc',
+ 'scheme' => 'http',
+ 'userinfo' => 'johndoe:secret',
+ ],
+ ],
+ [
+ 'ftp://johndoe:secret@mydomain.com:66/path/123?q=abc#test',
+ [
+ 'url' => 'ftp://johndoe:secret@mydomain.com:66/path/123?q=abc#test',
+ 'fragment' => 'test',
+ 'host' => 'mydomain.com',
+ 'path' => '/path/123',
+ 'port' => 66,
+ 'query' => 'q=abc',
+ 'scheme' => 'ftp',
+ 'userinfo' => 'johndoe:secret',
+ ],
+ ],
+ [
+ 'ftp://johndoe:secret@mydomain.com/path/123?q=abc#test',
+ [
+ 'url' => 'ftp://johndoe:secret@mydomain.com/path/123?q=abc#test',
+ 'fragment' => 'test',
+ 'host' => 'mydomain.com',
+ 'path' => '/path/123',
+ 'port' => 21,
+ 'query' => 'q=abc',
+ 'scheme' => 'ftp',
+ 'userinfo' => 'johndoe:secret',
+ ],
+ ],
+ [
+ 'ssh://johndoe:secret@mydomain.com/path/123?q=abc#test',
+ [
+ 'url' => 'ssh://johndoe:secret@mydomain.com/path/123?q=abc#test',
+ 'fragment' => 'test',
+ 'host' => 'mydomain.com',
+ 'path' => '/path/123',
+ 'port' => 22,
+ 'query' => 'q=abc',
+ 'scheme' => 'ssh',
+ 'userinfo' => 'johndoe:secret',
+ ],
+ ],
+ [
+ 'ssh://johndoe:secret@mydomain.com:33979/path/123?q=abc#test',
+ [
+ 'url' => 'ssh://johndoe:secret@mydomain.com:33979/path/123?q=abc#test',
+ 'fragment' => 'test',
+ 'host' => 'mydomain.com',
+ 'path' => '/path/123',
+ 'port' => 33979,
+ 'query' => 'q=abc',
+ 'scheme' => 'ssh',
+ 'userinfo' => 'johndoe:secret',
+ ],
+ ],
+ ];
+ }
}