From c9c774cfc9d4874639041d347202734f86ef3319 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 1 Mar 2022 18:46:44 +0100 Subject: [PATCH 1/4] Update composer files for PHP 8.1 --- .github/workflows/benchmarks.yml | 2 +- .github/workflows/coding-standards.yml | 2 +- .github/workflows/demo-scripts.yml | 2 +- .github/workflows/mutation-tests.yml | 2 +- .github/workflows/phpunit.yml | 4 +- .github/workflows/psalm.yml | 2 +- .github/workflows/xulieta.yml | 2 +- composer.json | 10 +- composer.lock | 1203 +++++++++-------- infection.json.dist | 4 +- .../MultipleProxyGenerationTest.php | 11 +- .../AbstractProxyGeneratorTest.php | 11 +- .../NullObjectGeneratorTest.php | 11 +- .../RemoteObjectGeneratorTest.php | 11 +- 14 files changed, 689 insertions(+), 588 deletions(-) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index b44b2f190..d556afd24 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "8.0" + - "8.1" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index c28008ced..79c648f76 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "8.0" + - "8.1" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/demo-scripts.yml b/.github/workflows/demo-scripts.yml index 175ec19ea..40dd6ada5 100644 --- a/.github/workflows/demo-scripts.yml +++ b/.github/workflows/demo-scripts.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "8.0" + - "8.1" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/mutation-tests.yml b/.github/workflows/mutation-tests.yml index aef979669..449d9bfd1 100644 --- a/.github/workflows/mutation-tests.yml +++ b/.github/workflows/mutation-tests.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "8.0" + - "8.1" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index cbb617700..41ed21536 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -17,11 +17,11 @@ jobs: - "highest" - "locked" php-version: - - "8.0" + - "8.1" operating-system: - "ubuntu-latest" include: - - php-version: "8.0" + - php-version: "8.1" dependencies: "highest" operating-system: "ubuntu-latest" diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml index 138ccdc8c..58178a3a5 100644 --- a/.github/workflows/psalm.yml +++ b/.github/workflows/psalm.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "8.0" + - "8.1" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/xulieta.yml b/.github/workflows/xulieta.yml index d564295bf..d5acedca6 100644 --- a/.github/workflows/xulieta.yml +++ b/.github/workflows/xulieta.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "8.0" + - "8.1" operating-system: - "ubuntu-latest" diff --git a/composer.json b/composer.json index 279f735cc..0c24e6d09 100644 --- a/composer.json +++ b/composer.json @@ -19,9 +19,9 @@ } ], "require": { - "php": "~8.0.0", + "php": "~8.1.0", "composer-runtime-api": "^2.1.0", - "laminas/laminas-code": "^4.4.2", + "laminas/laminas-code": "^4.5.0", "webimpress/safe-writer": "^2.2.0" }, "conflict": { @@ -57,6 +57,10 @@ } }, "config": { - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "infection/extension-installer": true, + "dealerdirect/phpcodesniffer-composer-installer": true + } } } diff --git a/composer.lock b/composer.lock index e1f459349..2aecf79e1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,44 +4,43 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "da7e8e29fd166baf1cd0f010bacd1478", + "content-hash": "7a165c7ec1dd7c3b1d03496d0dd0d705", "packages": [ { "name": "laminas/laminas-code", - "version": "4.4.2", + "version": "4.5.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b" + "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/54251ab2b16c41c6980387839496b235f5f6e10b", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e", "shasum": "" }, "require": { - "php": "^7.4 || ~8.0.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" + "php": ">=7.4, <8.2" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.13.2", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.1.4", - "laminas/laminas-stdlib": "^3.3.0", - "phpunit/phpunit": "^9.4.2", - "psalm/plugin-phpunit": "^0.14.0", - "vimeo/psalm": "^4.3.1" + "laminas/laminas-coding-standard": "^2.3.0", + "laminas/laminas-stdlib": "^3.6.1", + "phpunit/phpunit": "^9.5.10", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.13.1" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component", - "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" + "laminas/laminas-stdlib": "Laminas\\Stdlib component" }, "type": "library", "autoload": { + "files": [ + "polyfill/ReflectionEnumPolyfill.php" + ], "psr-4": { "Laminas\\Code\\": "src/" } @@ -71,7 +70,7 @@ "type": "community_bridge" } ], - "time": "2021-07-09T11:58:40+00:00" + "time": "2021-12-19T18:06:55+00:00" }, { "name": "webimpress/safe-writer", @@ -136,27 +135,27 @@ "packages-dev": [ { "name": "amphp/amp", - "version": "v2.5.2", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9" + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/efca2b32a7580087adb8aabbff6be1dc1bb924a9", - "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9", + "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", "shasum": "" }, "require": { - "php": ">=7" + "php": ">=7.1" }, "require-dev": { "amphp/php-cs-fixer-config": "dev-master", "amphp/phpunit-util": "^1", "ext-json": "*", "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6.0.9 | ^7", + "phpunit/phpunit": "^7 | ^8 | ^9", "psalm/phar": "^3.11@dev", "react/promise": "^2" }, @@ -167,13 +166,13 @@ } }, "autoload": { - "psr-4": { - "Amp\\": "lib" - }, "files": [ "lib/functions.php", "lib/Internal/functions.php" - ] + ], + "psr-4": { + "Amp\\": "lib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -198,7 +197,7 @@ } ], "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "http://amphp.org/amp", + "homepage": "https://amphp.org/amp", "keywords": [ "async", "asynchronous", @@ -213,7 +212,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.5.2" + "source": "https://github.com/amphp/amp/tree/v2.6.2" }, "funding": [ { @@ -221,7 +220,7 @@ "type": "github" } ], - "time": "2021-01-10T17:06:37+00:00" + "time": "2022-02-20T17:52:18+00:00" }, { "name": "amphp/byte-stream", @@ -256,12 +255,12 @@ } }, "autoload": { - "psr-4": { - "Amp\\ByteStream\\": "lib" - }, "files": [ "lib/functions.php" - ] + ], + "psr-4": { + "Amp\\ByteStream\\": "lib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -302,16 +301,16 @@ }, { "name": "beberlei/assert", - "version": "v3.3.1", + "version": "v3.3.2", "source": { "type": "git", "url": "https://github.com/beberlei/assert.git", - "reference": "5e721d7e937ca3ba2cdec1e1adf195f9e5188372" + "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/5e721d7e937ca3ba2cdec1e1adf195f9e5188372", - "reference": "5e721d7e937ca3ba2cdec1e1adf195f9e5188372", + "url": "https://api.github.com/repos/beberlei/assert/zipball/cb70015c04be1baee6f5f5c953703347c0ac1655", + "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655", "shasum": "" }, "require": { @@ -332,12 +331,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "Assert\\": "lib/Assert" - }, "files": [ "lib/Assert/functions.php" - ] + ], + "psr-4": { + "Assert\\": "lib/Assert" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -363,9 +362,9 @@ ], "support": { "issues": "https://github.com/beberlei/assert/issues", - "source": "https://github.com/beberlei/assert/tree/v3.3.1" + "source": "https://github.com/beberlei/assert/tree/v3.3.2" }, - "time": "2021-04-18T20:11:03+00:00" + "time": "2021-12-16T21:41:27+00:00" }, { "name": "codelicia/xulieta", @@ -450,16 +449,16 @@ }, { "name": "composer/package-versions-deprecated", - "version": "1.11.99.2", + "version": "1.11.99.5", "source": { "type": "git", "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c" + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/c6522afe5540d5fc46675043d3ed5a45a740b27c", - "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", "shasum": "" }, "require": { @@ -503,7 +502,78 @@ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.2" + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-01-17T14:14:24+00:00" + }, + { + "name": "composer/pcre", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.0.0" }, "funding": [ { @@ -519,27 +589,27 @@ "type": "tidelift" } ], - "time": "2021-05-24T07:46:03+00:00" + "time": "2022-02-25T20:21:48+00:00" }, { "name": "composer/semver", - "version": "3.2.5", + "version": "3.2.9", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" + "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", + "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649", + "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -584,7 +654,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.5" + "source": "https://github.com/composer/semver/tree/3.2.9" }, "funding": [ { @@ -600,29 +670,31 @@ "type": "tidelift" } ], - "time": "2021-05-24T12:41:47+00:00" + "time": "2022-02-04T13:58:43+00:00" }, { "name": "composer/xdebug-handler", - "version": "2.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", - "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { @@ -648,7 +720,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.1" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, "funding": [ { @@ -664,31 +736,31 @@ "type": "tidelift" } ], - "time": "2021-05-05T19:37:51+00:00" + "time": "2022-02-25T21:32:43+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.1", + "version": "v0.7.2", "source": { "type": "git", "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c" + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0" + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { "composer/composer": "*", - "phpcompatibility/php-compatibility": "^9.0", - "sensiolabs/security-checker": "^4.1.0" + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" }, "type": "composer-plugin", "extra": { @@ -709,6 +781,10 @@ "email": "franck.nijhof@dealerdirect.com", "homepage": "http://www.frenck.nl", "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -720,6 +796,7 @@ "codesniffer", "composer", "installer", + "phpcbf", "phpcs", "plugin", "qa", @@ -734,7 +811,7 @@ "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" }, - "time": "2020-12-07T18:04:37+00:00" + "time": "2022-02-04T12:51:07+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -775,16 +852,16 @@ }, { "name": "doctrine/annotations", - "version": "1.13.1", + "version": "1.13.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f" + "reference": "5b668aef16090008790395c02c893b1ba13f7e08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", - "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", + "reference": "5b668aef16090008790395c02c893b1ba13f7e08", "shasum": "" }, "require": { @@ -841,9 +918,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.1" + "source": "https://github.com/doctrine/annotations/tree/1.13.2" }, - "time": "2021-05-16T18:07:53+00:00" + "time": "2021-08-05T19:00:23+00:00" }, { "name": "doctrine/coding-standard", @@ -1065,32 +1142,28 @@ }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" @@ -1125,7 +1198,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { @@ -1141,7 +1214,7 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { "name": "doctrine/rst-parser", @@ -1314,25 +1387,25 @@ }, { "name": "infection/abstract-testframework-adapter", - "version": "0.3.1", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/infection/abstract-testframework-adapter.git", - "reference": "c52539339f28d6b67625ff24496289b3e6d66025" + "reference": "18925e20d15d1a5995bb85c9dc09e8751e1e069b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/abstract-testframework-adapter/zipball/c52539339f28d6b67625ff24496289b3e6d66025", - "reference": "c52539339f28d6b67625ff24496289b3e6d66025", + "url": "https://api.github.com/repos/infection/abstract-testframework-adapter/zipball/18925e20d15d1a5995bb85c9dc09e8751e1e069b", + "reference": "18925e20d15d1a5995bb85c9dc09e8751e1e069b", "shasum": "" }, "require": { - "php": "^7.3 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "ergebnis/composer-normalize": "^2.8", - "friendsofphp/php-cs-fixer": "^2.16", - "phpunit/phpunit": "^9.0" + "friendsofphp/php-cs-fixer": "^2.17", + "phpunit/phpunit": "^9.5" }, "type": "library", "autoload": { @@ -1353,39 +1426,49 @@ "description": "Abstract Test Framework Adapter for Infection", "support": { "issues": "https://github.com/infection/abstract-testframework-adapter/issues", - "source": "https://github.com/infection/abstract-testframework-adapter/tree/0.3" + "source": "https://github.com/infection/abstract-testframework-adapter/tree/0.5.0" }, - "time": "2020-08-30T13:50:12+00:00" + "funding": [ + { + "url": "https://github.com/infection", + "type": "github" + }, + { + "url": "https://opencollective.com/infection", + "type": "open_collective" + } + ], + "time": "2021-08-17T18:49:12+00:00" }, { "name": "infection/extension-installer", - "version": "0.1.1", + "version": "0.1.2", "source": { "type": "git", "url": "https://github.com/infection/extension-installer.git", - "reference": "ff30c0adffcdbc747c96adf92382ccbe271d0afd" + "reference": "9b351d2910b9a23ab4815542e93d541e0ca0cdcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/extension-installer/zipball/ff30c0adffcdbc747c96adf92382ccbe271d0afd", - "reference": "ff30c0adffcdbc747c96adf92382ccbe271d0afd", + "url": "https://api.github.com/repos/infection/extension-installer/zipball/9b351d2910b9a23ab4815542e93d541e0ca0cdcf", + "reference": "9b351d2910b9a23ab4815542e93d541e0ca0cdcf", "shasum": "" }, "require": { "composer-plugin-api": "^1.1 || ^2.0" }, "require-dev": { - "composer/composer": "^1.9", - "friendsofphp/php-cs-fixer": "^2.16", + "composer/composer": "^1.9 || ^2.0", + "friendsofphp/php-cs-fixer": "^2.18, <2.19", "infection/infection": "^0.15.2", - "php-coveralls/php-coveralls": "^2.2", + "php-coveralls/php-coveralls": "^2.4", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^0.12.10", "phpstan/phpstan-phpunit": "^0.12.6", "phpstan/phpstan-strict-rules": "^0.12.2", "phpstan/phpstan-webmozart-assert": "^0.12.2", - "phpunit/phpunit": "^8.5", - "vimeo/psalm": "^3.8" + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.8" }, "type": "composer-plugin", "extra": { @@ -1409,22 +1492,32 @@ "description": "Infection Extension Installer", "support": { "issues": "https://github.com/infection/extension-installer/issues", - "source": "https://github.com/infection/extension-installer/tree/0.1.1" + "source": "https://github.com/infection/extension-installer/tree/0.1.2" }, - "time": "2020-04-25T22:40:05+00:00" + "funding": [ + { + "url": "https://github.com/infection", + "type": "github" + }, + { + "url": "https://opencollective.com/infection", + "type": "open_collective" + } + ], + "time": "2021-10-20T22:08:34+00:00" }, { "name": "infection/include-interceptor", - "version": "0.2.4", + "version": "0.2.5", "source": { "type": "git", "url": "https://github.com/infection/include-interceptor.git", - "reference": "e3cf9317a7fd554ab60a5587f028b16418cc4264" + "reference": "0cc76d95a79d9832d74e74492b0a30139904bdf7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/include-interceptor/zipball/e3cf9317a7fd554ab60a5587f028b16418cc4264", - "reference": "e3cf9317a7fd554ab60a5587f028b16418cc4264", + "url": "https://api.github.com/repos/infection/include-interceptor/zipball/0cc76d95a79d9832d74e74492b0a30139904bdf7", + "reference": "0cc76d95a79d9832d74e74492b0a30139904bdf7", "shasum": "" }, "require-dev": { @@ -1455,66 +1548,77 @@ "description": "Stream Wrapper: Include Interceptor. Allows to replace included (autoloaded) file with another one.", "support": { "issues": "https://github.com/infection/include-interceptor/issues", - "source": "https://github.com/infection/include-interceptor/tree/0.2.4" + "source": "https://github.com/infection/include-interceptor/tree/0.2.5" }, - "time": "2020-08-07T22:40:37+00:00" + "funding": [ + { + "url": "https://github.com/infection", + "type": "github" + }, + { + "url": "https://opencollective.com/infection", + "type": "open_collective" + } + ], + "time": "2021-08-09T10:03:57+00:00" }, { "name": "infection/infection", - "version": "0.23.0", + "version": "0.26.5", "source": { "type": "git", "url": "https://github.com/infection/infection.git", - "reference": "ac87ae49e9f192f610276565e54469231dca7837" + "reference": "d6f07358cb40e0ccb0ea99247ae6b22120540f7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/infection/zipball/ac87ae49e9f192f610276565e54469231dca7837", - "reference": "ac87ae49e9f192f610276565e54469231dca7837", + "url": "https://api.github.com/repos/infection/infection/zipball/d6f07358cb40e0ccb0ea99247ae6b22120540f7f", + "reference": "d6f07358cb40e0ccb0ea99247ae6b22120540f7f", "shasum": "" }, "require": { - "composer/xdebug-handler": "^2.0", + "composer-runtime-api": "^2.0", + "composer/xdebug-handler": "^2.0 || ^3.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", - "infection/abstract-testframework-adapter": "^0.3.1", + "infection/abstract-testframework-adapter": "^0.5.0", "infection/extension-installer": "^0.1.0", - "infection/include-interceptor": "^0.2.4", - "justinrainbow/json-schema": "^5.2", - "nikic/php-parser": "^4.10.3", - "ocramius/package-versions": "^1.9.0 || ^2.0", - "ondram/ci-detector": "^3.3.0", + "infection/include-interceptor": "^0.2.5", + "justinrainbow/json-schema": "^5.2.10", + "nikic/php-parser": "^4.13.2", + "ondram/ci-detector": "^4.1.0", "php": "^7.4.7 || ^8.0", "sanmai/later": "^0.1.1", - "sanmai/pipeline": "^5.1", + "sanmai/pipeline": "^5.1 || ^6", "sebastian/diff": "^3.0.2 || ^4.0", "seld/jsonlint": "^1.7", - "symfony/console": "^3.4.29 || ^4.1.19 || ^5.0", - "symfony/filesystem": "^3.4.29 || ^4.1.19 || ^5.0", - "symfony/finder": "^3.4.29 || ^4.1.19 || ^5.0", - "symfony/process": "^3.4.29 || ^4.1.19 || ^5.0", - "thecodingmachine/safe": "^1.0", + "symfony/console": "^3.4.29 || ^4.1.19 || ^5.0 || ^6.0", + "symfony/filesystem": "^3.4.29 || ^4.1.19 || ^5.0 || ^6.0", + "symfony/finder": "^3.4.29 || ^4.1.19 || ^5.0 || ^6.0", + "symfony/process": "^3.4.29 || ^4.1.19 || ^5.0 || ^6.0", + "thecodingmachine/safe": "^1.1.3", "webmozart/assert": "^1.3", "webmozart/path-util": "^2.3" }, "conflict": { - "phpunit/php-code-coverage": ">9 <9.1.4", - "symfony/console": "=4.1.5" + "dg/bypass-finals": "*", + "phpunit/php-code-coverage": ">9 <9.1.4" }, "require-dev": { + "brianium/paratest": "^6.3", "ext-simplexml": "*", "helmich/phpunit-json-assert": "^3.0", "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.8", - "phpstan/phpstan-phpunit": "^0.12.6", - "phpstan/phpstan-strict-rules": "^0.12.5", - "phpstan/phpstan-webmozart-assert": "^0.12.2", + "phpstan/extension-installer": "^1.1.0", + "phpstan/phpstan": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.1.0", + "phpstan/phpstan-webmozart-assert": "^1.0.2", "phpunit/phpunit": "^9.3.11", "symfony/phpunit-bridge": "^4.4.18 || ^5.1.10", "symfony/yaml": "^5.0", - "thecodingmachine/phpstan-safe-rule": "^1.0" + "thecodingmachine/phpstan-safe-rule": "^1.1.0" }, "bin": [ "bin/infection" @@ -1570,7 +1674,7 @@ ], "support": { "issues": "https://github.com/infection/infection/issues", - "source": "https://github.com/infection/infection/tree/0.23.0" + "source": "https://github.com/infection/infection/tree/0.26.5" }, "funding": [ { @@ -1582,20 +1686,20 @@ "type": "open_collective" } ], - "time": "2021-05-13T16:12:33+00:00" + "time": "2022-02-15T05:20:07+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.10", + "version": "5.2.11", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" + "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", + "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", "shasum": "" }, "require": { @@ -1650,9 +1754,9 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" }, - "time": "2020-05-27T16:41:55+00:00" + "time": "2021-07-22T09:24:00+00:00" }, { "name": "myclabs/deep-copy", @@ -1671,9 +1775,6 @@ "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" - }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", @@ -1681,12 +1782,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1765,16 +1866,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.11.0", + "version": "v4.13.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94" + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/fe14cf3672a149364fb66dfe11bf6549af899f94", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", "shasum": "" }, "require": { @@ -1815,22 +1916,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.11.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" }, - "time": "2021-07-03T13:36:55+00:00" + "time": "2021-11-30T19:35:32+00:00" }, { "name": "ondram/ci-detector", - "version": "3.5.1", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/OndraM/ci-detector.git", - "reference": "594e61252843b68998bddd48078c5058fe9028bd" + "reference": "8a4b664e916df82ff26a44709942dfd593fa6f30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/594e61252843b68998bddd48078c5058fe9028bd", - "reference": "594e61252843b68998bddd48078c5058fe9028bd", + "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/8a4b664e916df82ff26a44709942dfd593fa6f30", + "reference": "8a4b664e916df82ff26a44709942dfd593fa6f30", "shasum": "" }, "require": { @@ -1838,11 +1939,11 @@ }, "require-dev": { "ergebnis/composer-normalize": "^2.2", - "lmc/coding-standard": "^1.3 || ^2.0", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpstan/extension-installer": "^1.0.3", - "phpstan/phpstan": "^0.12.0", - "phpstan/phpstan-phpunit": "^0.12.1", + "lmc/coding-standard": "^1.3 || ^2.1", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0.5", + "phpstan/phpstan": "^0.12.58", + "phpstan/phpstan-phpunit": "^0.12.16", "phpunit/phpunit": "^7.1 || ^8.0 || ^9.0" }, "type": "library", @@ -1870,6 +1971,9 @@ "appveyor", "aws", "aws codebuild", + "azure", + "azure devops", + "azure pipelines", "bamboo", "bitbucket", "buddy", @@ -1877,19 +1981,22 @@ "codebuild", "continuous integration", "continuousphp", + "devops", "drone", "github", "gitlab", "interface", "jenkins", + "pipelines", + "sourcehut", "teamcity", "travis" ], "support": { "issues": "https://github.com/OndraM/ci-detector/issues", - "source": "https://github.com/OndraM/ci-detector/tree/main" + "source": "https://github.com/OndraM/ci-detector/tree/4.1.0" }, - "time": "2020-09-04T11:21:14+00:00" + "time": "2021-04-14T09:16:52+00:00" }, { "name": "openlss/lib-array2xml", @@ -1946,16 +2053,16 @@ }, { "name": "phar-io/manifest", - "version": "2.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { @@ -2000,22 +2107,22 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2020-06-27T14:33:11+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -2051,27 +2158,27 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpbench/container", - "version": "2.1.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/phpbench/container.git", - "reference": "def10824b6009d31028fa8dc9f73f4b26b234a67" + "reference": "6d555ff7174fca13f9b1ec0b4a089ed41d0ab392" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/container/zipball/def10824b6009d31028fa8dc9f73f4b26b234a67", - "reference": "def10824b6009d31028fa8dc9f73f4b26b234a67", + "url": "https://api.github.com/repos/phpbench/container/zipball/6d555ff7174fca13f9b1ec0b4a089ed41d0ab392", + "reference": "6d555ff7174fca13f9b1ec0b4a089ed41d0ab392", "shasum": "" }, "require": { - "psr/container": "^1.0", - "symfony/options-resolver": "^4.2 || ^5.0" + "psr/container": "^1.0|^2.0", + "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.16", @@ -2081,7 +2188,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -2102,22 +2209,22 @@ "description": "Simple, configurable, service container.", "support": { "issues": "https://github.com/phpbench/container/issues", - "source": "https://github.com/phpbench/container/tree/2.1.0" + "source": "https://github.com/phpbench/container/tree/2.2.1" }, - "time": "2021-04-04T07:23:17+00:00" + "time": "2022-01-25T10:17:35+00:00" }, { "name": "phpbench/dom", - "version": "0.3.1", + "version": "0.3.2", "source": { "type": "git", "url": "https://github.com/phpbench/dom.git", - "reference": "d26e615c4d64da41d168ab1096e4f55d97f2344f" + "reference": "b013b717832ddbaadf2a40984b04bc66af9a7110" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/dom/zipball/d26e615c4d64da41d168ab1096e4f55d97f2344f", - "reference": "d26e615c4d64da41d168ab1096e4f55d97f2344f", + "url": "https://api.github.com/repos/phpbench/dom/zipball/b013b717832ddbaadf2a40984b04bc66af9a7110", + "reference": "b013b717832ddbaadf2a40984b04bc66af9a7110", "shasum": "" }, "require": { @@ -2153,53 +2260,53 @@ "description": "DOM wrapper to simplify working with the PHP DOM implementation", "support": { "issues": "https://github.com/phpbench/dom/issues", - "source": "https://github.com/phpbench/dom/tree/0.3.1" + "source": "https://github.com/phpbench/dom/tree/0.3.2" }, - "time": "2021-04-21T20:44:19+00:00" + "time": "2021-09-24T15:26:07+00:00" }, { "name": "phpbench/phpbench", - "version": "1.0.3", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/phpbench/phpbench.git", - "reference": "9827767f62f6f84974b1317f53536d68ae8db5e1" + "reference": "31750c45791a3e0bb7311aebfd1a4ed6f8f3fc86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/phpbench/zipball/9827767f62f6f84974b1317f53536d68ae8db5e1", - "reference": "9827767f62f6f84974b1317f53536d68ae8db5e1", + "url": "https://api.github.com/repos/phpbench/phpbench/zipball/31750c45791a3e0bb7311aebfd1a4ed6f8f3fc86", + "reference": "31750c45791a3e0bb7311aebfd1a4ed6f8f3fc86", "shasum": "" }, "require": { - "doctrine/annotations": "^1.2.7", + "doctrine/annotations": "^1.13", "ext-dom": "*", "ext-json": "*", "ext-pcre": "*", "ext-reflection": "*", "ext-spl": "*", "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", + "php": "^7.3 || ^8.0", "phpbench/container": "^2.1", "phpbench/dom": "~0.3.1", - "psr/log": "^1.1", + "psr/log": "^1.1 || ^2.0 || ^3.0", "seld/jsonlint": "^1.1", - "symfony/console": "^4.2 || ^5.0", - "symfony/filesystem": "^4.2 || ^5.0", - "symfony/finder": "^4.2 || ^5.0", - "symfony/options-resolver": "^4.2 || ^5.0", - "symfony/process": "^4.2 || ^5.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0", + "symfony/filesystem": "^4.2 || ^5.0 || ^6.0", + "symfony/finder": "^4.2 || ^5.0 || ^6.0", + "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0", + "symfony/process": "^4.2 || ^5.0 || ^6.0", "webmozart/path-util": "^2.3" }, "require-dev": { "dantleech/invoke": "^2.0", - "friendsofphp/php-cs-fixer": "^2.13.1", + "friendsofphp/php-cs-fixer": "^3.0", "jangregor/phpstan-prophecy": "^0.8.1", "phpspec/prophecy": "^1.12", "phpstan/phpstan": "^0.12.7", "phpunit/phpunit": "^8.5.8 || ^9.0", - "symfony/error-handler": "^5.2", - "symfony/var-dumper": "^4.0 || ^5.0" + "symfony/error-handler": "^5.2 || ^6.0", + "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0" }, "suggest": { "ext-xdebug": "For Xdebug profiling extension." @@ -2210,14 +2317,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.1-dev" } }, "autoload": { + "files": [ + "lib/Report/Func/functions.php" + ], "psr-4": { "PhpBench\\": "lib/", - "PhpBench\\Extensions\\XDebug\\": "extensions/xdebug/lib/", - "PhpBench\\Extensions\\Reports\\": "extensions/reports/lib/" + "PhpBench\\Extensions\\XDebug\\": "extensions/xdebug/lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2233,7 +2342,7 @@ "description": "PHP Benchmarking Framework", "support": { "issues": "https://github.com/phpbench/phpbench/issues", - "source": "https://github.com/phpbench/phpbench/tree/1.0.3" + "source": "https://github.com/phpbench/phpbench/tree/1.2.3" }, "funding": [ { @@ -2241,7 +2350,7 @@ "type": "github" } ], - "time": "2021-07-03T09:36:14+00:00" + "time": "2021-12-24T10:09:29+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2298,16 +2407,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -2318,7 +2427,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -2348,22 +2458,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", "shasum": "" }, "require": { @@ -2371,7 +2481,8 @@ "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -2397,39 +2508,39 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2022-01-04T19:58:01+00:00" }, { "name": "phpspec/prophecy", - "version": "1.13.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", + "php": "^7.2 || ~8.0, <8.2", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^6.0", + "phpspec/phpspec": "^6.0 || ^7.0", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -2464,22 +2575,22 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" }, - "time": "2021-03-17T13:42:18+00:00" + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "0.5.5", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c" + "reference": "dbc093d7af60eff5cd575d2ed761b15ed40bd08e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c", - "reference": "ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/dbc093d7af60eff5cd575d2ed761b15ed40bd08e", + "reference": "dbc093d7af60eff5cd575d2ed761b15ed40bd08e", "shasum": "" }, "require": { @@ -2488,15 +2599,15 @@ "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.87", - "phpstan/phpstan-strict-rules": "^0.12.5", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.5-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -2513,29 +2624,29 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/0.5.5" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.2.0" }, - "time": "2021-06-11T13:24:46+00:00" + "time": "2021-09-16T20:46:02+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f4d60b6afe5546421462b76cd4e633ebc364ab4", + "reference": "9f4d60b6afe5546421462b76cd4e633ebc364ab4", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.13.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -2584,7 +2695,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.14" }, "funding": [ { @@ -2592,20 +2703,20 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2022-02-28T12:38:02+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -2644,7 +2755,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -2652,7 +2763,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -2837,16 +2948,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.6", + "version": "9.5.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb" + "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5ff8c545a50226c569310a35f4fa89d79f1ddfdc", + "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc", "shasum": "" }, "require": { @@ -2858,11 +2969,11 @@ "ext-xml": "*", "ext-xmlwriter": "*", "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", + "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -2897,11 +3008,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2924,11 +3035,11 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.16" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { @@ -2936,7 +3047,7 @@ "type": "github" } ], - "time": "2021-06-23T05:14:38+00:00" + "time": "2022-02-23T17:10:58+00:00" }, { "name": "psr/cache", @@ -2989,22 +3100,27 @@ }, { "name": "psr/container", - "version": "1.1.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -3031,36 +3147,36 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3081,34 +3197,34 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/2.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:41:46+00:00" }, { "name": "roave/infection-static-analysis-plugin", - "version": "1.8.0", + "version": "1.17.0", "source": { "type": "git", "url": "https://github.com/Roave/infection-static-analysis-plugin.git", - "reference": "c1e5428a85ff24fa4ca75ac43f29c608d02379fe" + "reference": "5e1553743cc89fc40ec1f4c73124e745ff333927" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/infection-static-analysis-plugin/zipball/c1e5428a85ff24fa4ca75ac43f29c608d02379fe", - "reference": "c1e5428a85ff24fa4ca75ac43f29c608d02379fe", + "url": "https://api.github.com/repos/Roave/infection-static-analysis-plugin/zipball/5e1553743cc89fc40ec1f4c73124e745ff333927", + "reference": "5e1553743cc89fc40ec1f4c73124e745ff333927", "shasum": "" }, "require": { - "infection/infection": "0.23.0", + "infection/infection": "0.26.5", "ocramius/package-versions": "^1.9.0 || ^2.0.0", - "php": "~7.4.7|~8.0.0", + "php": "~7.4.7|~8.0.0|~8.1.0", "sanmai/later": "^0.1.2", - "vimeo/psalm": "^4.7.2" + "vimeo/psalm": "^4.20.0" }, "require-dev": { "doctrine/coding-standard": "^9.0.0", - "phpunit/phpunit": "^9.5.4" + "phpunit/phpunit": "^9.5.13" }, "bin": [ "bin/roave-infection-static-analysis-plugin" @@ -3132,9 +3248,9 @@ "description": "Static analysis on top of mutation testing - prevents escaped mutants from being invalid according to static analysis", "support": { "issues": "https://github.com/Roave/infection-static-analysis-plugin/issues", - "source": "https://github.com/Roave/infection-static-analysis-plugin/tree/1.8.0" + "source": "https://github.com/Roave/infection-static-analysis-plugin/tree/1.17.0" }, - "time": "2021-05-13T19:12:14+00:00" + "time": "2022-02-15T08:37:48+00:00" }, { "name": "sanmai/later", @@ -3164,12 +3280,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "Later\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Later\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3196,16 +3312,16 @@ }, { "name": "sanmai/pipeline", - "version": "v5.1.0", + "version": "v6.1", "source": { "type": "git", "url": "https://github.com/sanmai/pipeline.git", - "reference": "f935e10ddcb758c89829e7b69cfb1dc2b2638518" + "reference": "3a88f2617237e18d5cd2aa38ca3d4b22770306c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/pipeline/zipball/f935e10ddcb758c89829e7b69cfb1dc2b2638518", - "reference": "f935e10ddcb758c89829e7b69cfb1dc2b2638518", + "url": "https://api.github.com/repos/sanmai/pipeline/zipball/3a88f2617237e18d5cd2aa38ca3d4b22770306c2", + "reference": "3a88f2617237e18d5cd2aa38ca3d4b22770306c2", "shasum": "" }, "require": { @@ -3213,28 +3329,28 @@ }, "require-dev": { "ergebnis/composer-normalize": "^2.8", - "friendsofphp/php-cs-fixer": "^2.16", + "friendsofphp/php-cs-fixer": "^3", "infection/infection": ">=0.10.5", "league/pipeline": "^1.0 || ^0.3", - "phan/phan": "^1.1 || ^2.0 || ^3.0", + "phan/phan": ">=1.1", "php-coveralls/php-coveralls": "^2.4.1", "phpstan/phpstan": ">=0.10", "phpunit/phpunit": "^7.4 || ^8.1 || ^9.4", - "vimeo/psalm": "^2.0 || ^3.0 || ^4.0" + "vimeo/psalm": ">=2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "v5.x-dev" + "dev-main": "v6.x-dev" } }, "autoload": { - "psr-4": { - "Pipeline\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Pipeline\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3249,7 +3365,7 @@ "description": "General-purpose collections pipeline", "support": { "issues": "https://github.com/sanmai/pipeline/issues", - "source": "https://github.com/sanmai/pipeline/tree/v5.1.0" + "source": "https://github.com/sanmai/pipeline/tree/v6.1" }, "funding": [ { @@ -3257,7 +3373,7 @@ "type": "github" } ], - "time": "2020-10-25T15:20:56+00:00" + "time": "2022-01-30T08:15:59+00:00" }, { "name": "sebastian/cli-parser", @@ -3688,16 +3804,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { @@ -3746,14 +3862,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -3761,20 +3877,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -3817,7 +3933,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -3825,7 +3941,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -4288,32 +4404,32 @@ }, { "name": "slevomat/coding-standard", - "version": "7.0.12", + "version": "7.0.19", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "5716052725863953ddc2f8a7e934c09cb64bdf73" + "reference": "bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/5716052725863953ddc2f8a7e934c09cb64bdf73", - "reference": "5716052725863953ddc2f8a7e934c09cb64bdf73", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37", + "reference": "bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", "php": "^7.1 || ^8.0", - "phpstan/phpdoc-parser": "0.5.1 - 0.5.5", - "squizlabs/php_codesniffer": "^3.6.0" + "phpstan/phpdoc-parser": "^1.0.0", + "squizlabs/php_codesniffer": "^3.6.2" }, "require-dev": { - "phing/phing": "2.16.4", - "php-parallel-lint/php-parallel-lint": "1.3.0", - "phpstan/phpstan": "0.12.91", - "phpstan/phpstan-deprecation-rules": "0.12.6", - "phpstan/phpstan-phpunit": "0.12.20", - "phpstan/phpstan-strict-rules": "0.12.10", - "phpunit/phpunit": "7.5.20|8.5.5|9.5.6" + "phing/phing": "2.17.2", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.4.6", + "phpstan/phpstan-deprecation-rules": "1.0.0", + "phpstan/phpstan-phpunit": "1.0.0", + "phpstan/phpstan-strict-rules": "1.1.0", + "phpunit/phpunit": "7.5.20|8.5.21|9.5.16" }, "type": "phpcodesniffer-standard", "extra": { @@ -4333,7 +4449,7 @@ "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.0.12" + "source": "https://github.com/slevomat/coding-standard/tree/7.0.19" }, "funding": [ { @@ -4345,20 +4461,20 @@ "type": "tidelift" } ], - "time": "2021-07-13T17:47:03+00:00" + "time": "2022-03-01T18:01:41+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "shasum": "" }, "require": { @@ -4401,39 +4517,39 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-12-12T21:44:58+00:00" }, { "name": "symfony/config", - "version": "v5.3.3", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "a69e0c55528b47df88d3c4067ddedf32d485d662" + "reference": "d65e1bd990c740e31feb07d2b0927b8d4df9956f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/a69e0c55528b47df88d3c4067ddedf32d485d662", - "reference": "a69e0c55528b47df88d3c4067ddedf32d485d662", + "url": "https://api.github.com/repos/symfony/config/zipball/d65e1bd990c740e31feb07d2b0927b8d4df9956f", + "reference": "d65e1bd990c740e31feb07d2b0927b8d4df9956f", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/filesystem": "^4.4|^5.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php80": "^1.16", "symfony/polyfill-php81": "^1.22" }, "conflict": { "symfony/finder": "<4.4" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^4.4|^5.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -4464,7 +4580,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.3.3" + "source": "https://github.com/symfony/config/tree/v5.4.3" }, "funding": [ { @@ -4480,32 +4596,33 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2022-01-03T09:50:52+00:00" }, { "name": "symfony/console", - "version": "v5.3.2", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1" + "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1", - "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1", + "url": "https://api.github.com/repos/symfony/console/zipball/d8111acc99876953f52fe16d4c50eb60940d49ad", + "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { + "psr/log": ">=3", "symfony/dependency-injection": "<4.4", "symfony/dotenv": "<5.1", "symfony/event-dispatcher": "<4.4", @@ -4513,16 +4630,16 @@ "symfony/process": "<4.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -4562,7 +4679,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.2" + "source": "https://github.com/symfony/console/tree/v5.4.5" }, "funding": [ { @@ -4578,29 +4695,29 @@ "type": "tidelift" } ], - "time": "2021-06-12T09:42:48+00:00" + "time": "2022-02-24T12:45:35+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", + "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -4629,7 +4746,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0" }, "funding": [ { @@ -4645,25 +4762,26 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2021-11-01T23:48:49+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.26", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "a501126eb6ec9288a3434af01b3d4499ec1268a0" + "reference": "c59f37705c3e513ae55b2735f128f4ce363c82ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/a501126eb6ec9288a3434af01b3d4499ec1268a0", - "reference": "a501126eb6ec9288a3434af01b3d4499ec1268a0", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/c59f37705c3e513ae55b2735f128f4ce363c82ec", + "reference": "c59f37705c3e513ae55b2735f128f4ce363c82ec", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -4691,7 +4809,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v4.4.26" + "source": "https://github.com/symfony/filesystem/tree/v4.4.37" }, "funding": [ { @@ -4707,24 +4825,26 @@ "type": "tidelift" } ], - "time": "2021-06-30T07:12:23+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/finder", - "version": "v5.3.0", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6" + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", - "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", + "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -4752,7 +4872,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.0" + "source": "https://github.com/symfony/finder/tree/v5.4.3" }, "funding": [ { @@ -4768,27 +4888,25 @@ "type": "tidelift" } ], - "time": "2021-05-26T12:52:38+00:00" + "time": "2022-01-26T16:34:36+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.3.0", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5" + "reference": "51f7006670febe4cbcbae177cbffe93ff833250d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/162e886ca035869866d233a2bfef70cc28f9bbe5", - "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d", + "reference": "51f7006670febe4cbcbae177cbffe93ff833250d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.0.2", + "symfony/deprecation-contracts": "^2.1|^3" }, "type": "library", "autoload": { @@ -4821,7 +4939,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.3.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.0.3" }, "funding": [ { @@ -4837,7 +4955,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4873,12 +4991,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4923,16 +5041,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", "shasum": "" }, "require": { @@ -4952,12 +5070,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4984,7 +5102,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0" }, "funding": [ { @@ -5000,11 +5118,11 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2021-11-23T21:10:46+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -5033,12 +5151,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5068,7 +5186,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0" }, "funding": [ { @@ -5120,12 +5238,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5247,16 +5365,16 @@ }, { "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", "shasum": "" }, "require": { @@ -5273,12 +5391,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5306,7 +5424,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0" }, "funding": [ { @@ -5322,20 +5440,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-06-05T21:20:04+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", + "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", "shasum": "" }, "require": { @@ -5352,12 +5470,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5389,7 +5507,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" }, "funding": [ { @@ -5405,20 +5523,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-09-13T13:58:33+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", "shasum": "" }, "require": { @@ -5435,12 +5553,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5468,7 +5586,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0" }, "funding": [ { @@ -5484,25 +5602,25 @@ "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2021-09-13T13:58:11+00:00" }, { "name": "symfony/process", - "version": "v5.3.2", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "714b47f9196de61a196d86c4bad5f09201b307df" + "reference": "95440409896f90a5f85db07a32b517ecec17fa4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/714b47f9196de61a196d86c4bad5f09201b307df", - "reference": "714b47f9196de61a196d86c4bad5f09201b307df", + "url": "https://api.github.com/repos/symfony/process/zipball/95440409896f90a5f85db07a32b517ecec17fa4c", + "reference": "95440409896f90a5f85db07a32b517ecec17fa4c", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -5530,7 +5648,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.2" + "source": "https://github.com/symfony/process/tree/v5.4.5" }, "funding": [ { @@ -5546,25 +5664,28 @@ "type": "tidelift" } ], - "time": "2021-06-12T10:15:01+00:00" + "time": "2022-01-30T18:16:22+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", + "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" + "php": ">=8.0.2", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -5572,7 +5693,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -5609,7 +5730,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.0.0" }, "funding": [ { @@ -5625,44 +5746,46 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2021-11-04T17:53:12+00:00" }, { "name": "symfony/string", - "version": "v5.3.3", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", + "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -5692,7 +5815,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "source": "https://github.com/symfony/string/tree/v6.0.3" }, "funding": [ { @@ -5708,7 +5831,7 @@ "type": "tidelift" } ], - "time": "2021-06-27T11:44:38+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "thecodingmachine/safe", @@ -5739,13 +5862,6 @@ } }, "autoload": { - "psr-4": { - "Safe\\": [ - "lib/", - "deprecated/", - "generated/" - ] - }, "files": [ "deprecated/apc.php", "deprecated/libevent.php", @@ -5836,7 +5952,14 @@ "generated/yaz.php", "generated/zip.php", "generated/zlib.php" - ] + ], + "psr-4": { + "Safe\\": [ + "lib/", + "deprecated/", + "generated/" + ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5851,16 +5974,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -5889,7 +6012,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -5897,7 +6020,7 @@ "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "twig/twig", @@ -5981,16 +6104,16 @@ }, { "name": "vimeo/psalm", - "version": "4.8.1", + "version": "4.22.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "f73f2299dbc59a3e6c4d66cff4605176e728ee69" + "reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/f73f2299dbc59a3e6c4d66cff4605176e728ee69", - "reference": "f73f2299dbc59a3e6c4d66cff4605176e728ee69", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/fc2c6ab4d5fa5d644d8617089f012f3bb84b8703", + "reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703", "shasum": "" }, "require": { @@ -5998,8 +6121,9 @@ "amphp/byte-stream": "^1.5", "composer/package-versions-deprecated": "^1.8.0", "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1 || ^2.0", + "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0", "dnoegel/php-xdg-base-dir": "^0.1.1", + "ext-ctype": "*", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -6009,11 +6133,11 @@ "felixfbecker/advanced-json-rpc": "^3.0.3", "felixfbecker/language-server-protocol": "^1.5", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.10.5", + "nikic/php-parser": "^4.13", "openlss/lib-array2xml": "^1.0", "php": "^7.1|^8", "sebastian/diff": "^3.0 || ^4.0", - "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0", + "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", "webmozart/path-util": "^2.3" }, "provide": { @@ -6031,12 +6155,12 @@ "psalm/plugin-phpunit": "^0.16", "slevomat/coding-standard": "^7.0", "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0", - "weirdan/phpunit-appveyor-reporter": "^1.0.0", + "symfony/process": "^4.3 || ^5.0 || ^6.0", "weirdan/prophecy-shim": "^1.0 || ^2.0" }, "suggest": { - "ext-igbinary": "^2.0.5" + "ext-curl": "In order to send data to shepherd", + "ext-igbinary": "^2.0.5 is required, used to serialize caching data" }, "bin": [ "psalm", @@ -6055,13 +6179,13 @@ } }, "autoload": { - "psr-4": { - "Psalm\\": "src/Psalm/" - }, "files": [ "src/functions.php", "src/spl_object_id.php" - ] + ], + "psr-4": { + "Psalm\\": "src/Psalm/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6080,9 +6204,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.8.1" + "source": "https://github.com/vimeo/psalm/tree/4.22.0" }, - "time": "2021-06-20T23:03:20+00:00" + "time": "2022-02-24T20:34:05+00:00" }, { "name": "webmozart/assert", @@ -6190,6 +6314,7 @@ "issues": "https://github.com/webmozart/path-util/issues", "source": "https://github.com/webmozart/path-util/tree/2.3.0" }, + "abandoned": "symfony/filesystem", "time": "2015-12-17T08:42:14+00:00" } ], @@ -6199,7 +6324,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "~8.0.0", + "php": "~8.1.0", "composer-runtime-api": "^2.1.0" }, "platform-dev": { diff --git a/infection.json.dist b/infection.json.dist index 24566efdf..4eb42c187 100644 --- a/infection.json.dist +++ b/infection.json.dist @@ -7,8 +7,8 @@ "logs": { "text": "php://stderr", "github": true, - "badge": { - "branch": "master" + "stryker": { + "badge": "master" } }, "minMsi": 84, diff --git a/tests/ProxyManagerTest/Functional/MultipleProxyGenerationTest.php b/tests/ProxyManagerTest/Functional/MultipleProxyGenerationTest.php index 672c66d95..f3182ccea 100644 --- a/tests/ProxyManagerTest/Functional/MultipleProxyGenerationTest.php +++ b/tests/ProxyManagerTest/Functional/MultipleProxyGenerationTest.php @@ -34,8 +34,6 @@ use ProxyManagerTestAsset\ScalarTypeHintedClass; use ProxyManagerTestAsset\VoidMethodTypeHintedClass; -use const PHP_VERSION_ID; - /** * Verifies that proxy factories don't conflict with each other when generating proxies * @@ -98,7 +96,7 @@ public function testCanGenerateMultipleDifferentProxiesForSameClass(object $obje */ public function getTestedClasses(): array { - $objects = [ + return [ [new BaseClass()], [new ClassWithMagicMethods()], [new ClassWithFinalMethods()], @@ -124,12 +122,7 @@ public function getTestedClasses(): array [new ObjectTypeHintClass()], [new ReturnTypeHintedClass()], [new VoidMethodTypeHintedClass()], + [new ClassWithPhp80TypedMethods()], ]; - - if (PHP_VERSION_ID >= 80000) { - $objects[] = [new ClassWithPhp80TypedMethods()]; - } - - return $objects; } } diff --git a/tests/ProxyManagerTest/ProxyGenerator/AbstractProxyGeneratorTest.php b/tests/ProxyManagerTest/ProxyGenerator/AbstractProxyGeneratorTest.php index cecb79016..a15763941 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/AbstractProxyGeneratorTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/AbstractProxyGeneratorTest.php @@ -26,8 +26,6 @@ use ProxyManagerTestAsset\VoidMethodTypeHintedInterface; use ReflectionClass; -use const PHP_VERSION_ID; - /** * Base test for proxy generators * @@ -87,7 +85,7 @@ abstract protected function getExpectedImplementedInterfaces(): array; /** @return string[][] */ public function getTestedImplementations(): array { - $implementations = [ + return [ [BaseClass::class], [ClassWithMagicMethods::class], [ClassWithByRefMagicMethods::class], @@ -102,12 +100,7 @@ public function getTestedImplementations(): array [VoidMethodTypeHintedInterface::class], [IterableMethodTypeHintedInterface::class], [ObjectMethodTypeHintedInterface::class], + [ClassWithPhp80TypedMethods::class], ]; - - if (PHP_VERSION_ID >= 80000) { - $implementations[] = [ClassWithPhp80TypedMethods::class]; - } - - return $implementations; } } diff --git a/tests/ProxyManagerTest/ProxyGenerator/NullObjectGeneratorTest.php b/tests/ProxyManagerTest/ProxyGenerator/NullObjectGeneratorTest.php index 4338cd83e..1eae41bb9 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/NullObjectGeneratorTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/NullObjectGeneratorTest.php @@ -22,8 +22,6 @@ use ReflectionClass; use ReflectionMethod; -use const PHP_VERSION_ID; - /** * Tests for {@see \ProxyManager\ProxyGenerator\NullObjectGenerator} * @@ -113,7 +111,7 @@ protected function getExpectedImplementedInterfaces(): array */ public function getTestedImplementations(): array { - $implementations = [ + return [ [BaseClass::class], [ClassWithMagicMethods::class], [ClassWithByRefMagicMethods::class], @@ -121,12 +119,7 @@ public function getTestedImplementations(): array [ClassWithMixedTypedProperties::class], [ClassWithMixedReferenceableTypedProperties::class], [BaseInterface::class], + [ClassWithPhp80TypedMethods::class], ]; - - if (PHP_VERSION_ID >= 80000) { - $implementations[] = [ClassWithPhp80TypedMethods::class]; - } - - return $implementations; } } diff --git a/tests/ProxyManagerTest/ProxyGenerator/RemoteObjectGeneratorTest.php b/tests/ProxyManagerTest/ProxyGenerator/RemoteObjectGeneratorTest.php index 85d615392..742850eae 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/RemoteObjectGeneratorTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/RemoteObjectGeneratorTest.php @@ -22,8 +22,6 @@ use function array_diff; -use const PHP_VERSION_ID; - /** * Tests for {@see \ProxyManager\ProxyGenerator\RemoteObjectGenerator} * @@ -83,7 +81,7 @@ protected function getExpectedImplementedInterfaces(): array /** @return string[][] */ public function getTestedImplementations(): array { - $implementations = [ + return [ [BaseClass::class], [ClassWithMagicMethods::class], [ClassWithByRefMagicMethods::class], @@ -91,12 +89,7 @@ public function getTestedImplementations(): array [ClassWithMixedTypedProperties::class], [ClassWithMixedReferenceableTypedProperties::class], [BaseInterface::class], + [ClassWithPhp80TypedMethods::class], ]; - - if (PHP_VERSION_ID >= 80000) { - $implementations[] = [ClassWithPhp80TypedMethods::class]; - } - - return $implementations; } } From 9db840f1256f84d4cde6d488a65ff0a129e0a448 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 1 Mar 2022 15:58:06 +0100 Subject: [PATCH 2/4] Expect deprecations about Serializable --- ...ocalizer-serialized-class-private-property-isset.phpt | 9 ++++++--- ...localizer-serialized-class-private-property-read.phpt | 8 ++++++-- ...ocalizer-serialized-class-private-property-unset.phpt | 8 ++++++-- ...ocalizer-serialized-class-private-property-write.phpt | 8 ++++++-- ...alizer-serialized-class-protected-property-isset.phpt | 9 ++++++--- ...calizer-serialized-class-protected-property-read.phpt | 8 ++++++-- ...alizer-serialized-class-protected-property-unset.phpt | 8 ++++++-- ...alizer-serialized-class-protected-property-write.phpt | 8 ++++++-- 8 files changed, 48 insertions(+), 18 deletions(-) diff --git a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-isset.phpt b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-isset.phpt index ba96c21f6..09c53b9b6 100644 --- a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-isset.phpt +++ b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-isset.phpt @@ -9,12 +9,12 @@ class Kitchen implements \Serializable { private $sweets = 'candy'; - function serialize() + function serialize(): ?string { return $this->sweets; } - function unserialize($serialized) + function unserialize(string $serialized): void { $this->sweets = $serialized; } @@ -26,5 +26,8 @@ $proxy = $factory->createProxy(new Kitchen()); var_dump(isset($proxy->sweets)); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Kitchen implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 5 + +Deprecated: ProxyManagerGeneratedProxy\__PM__\Kitchen\Generated%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s bool(false) diff --git a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-read.phpt b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-read.phpt index 8ea6c9f59..89491ec4f 100644 --- a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-read.phpt +++ b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-read.phpt @@ -9,12 +9,12 @@ class Kitchen implements \Serializable { private $sweets = 'candy'; - function serialize() + function serialize(): ?string { return $this->sweets; } - function unserialize($serialized) + function unserialize(string $serialized): void { $this->sweets = $serialized; } @@ -27,4 +27,8 @@ $proxy = $factory->createProxy(new Kitchen()); $proxy->sweets; ?> --EXPECTF-- +Deprecated: Kitchen implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 5 + +Deprecated: ProxyManagerGeneratedProxy\__PM__\Kitchen\Generated%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s + %SFatal error:%sCannot access private property %s::$sweets in %a diff --git a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-unset.phpt b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-unset.phpt index 8856ffeab..6f67219cf 100644 --- a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-unset.phpt +++ b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-unset.phpt @@ -9,12 +9,12 @@ class Kitchen implements \Serializable { private $sweets = 'candy'; - function serialize() + function serialize(): ?string { return $this->sweets; } - function unserialize($serialized) + function unserialize(string $serialized): void { $this->sweets = $serialized; } @@ -27,4 +27,8 @@ $proxy = $factory->createProxy(new Kitchen()); unset($proxy->sweets); ?> --EXPECTF-- +Deprecated: Kitchen implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 5 + +Deprecated: ProxyManagerGeneratedProxy\__PM__\Kitchen\Generated%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s + %SFatal error:%sCannot %s property%sin %a diff --git a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-write.phpt b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-write.phpt index 5dd51e159..2d5833e5c 100644 --- a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-write.phpt +++ b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-private-property-write.phpt @@ -9,12 +9,12 @@ class Kitchen implements \Serializable { private $sweets = 'candy'; - function serialize() + function serialize(): ?string { return $this->sweets; } - function unserialize($serialized) + function unserialize(string $serialized): void { $this->sweets = $serialized; } @@ -27,4 +27,8 @@ $proxy = $factory->createProxy(new Kitchen()); $proxy->sweets = 'stolen'; ?> --EXPECTF-- +Deprecated: Kitchen implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 5 + +Deprecated: ProxyManagerGeneratedProxy\__PM__\Kitchen\Generated%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s + %SFatal error:%sCannot %s property%sin %a diff --git a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-isset.phpt b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-isset.phpt index 6515d8d1c..f2b7c6359 100644 --- a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-isset.phpt +++ b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-isset.phpt @@ -9,12 +9,12 @@ class Kitchen implements \Serializable { protected $sweets = 'candy'; - function serialize() + function serialize(): ?string { return $this->sweets; } - function unserialize($serialized) + function unserialize(string $serialized): void { $this->sweets = $serialized; } @@ -26,5 +26,8 @@ $proxy = $factory->createProxy(new Kitchen()); var_dump(isset($proxy->sweets)); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Kitchen implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 5 + +Deprecated: ProxyManagerGeneratedProxy\__PM__\Kitchen\Generated%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s bool(false) diff --git a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-read.phpt b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-read.phpt index 6b94af19a..4c13a3790 100644 --- a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-read.phpt +++ b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-read.phpt @@ -9,12 +9,12 @@ class Kitchen implements \Serializable { protected $sweets = 'candy'; - function serialize() + function serialize(): ?string { return $this->sweets; } - function unserialize($serialized) + function unserialize(string $serialized): void { $this->sweets = $serialized; } @@ -27,4 +27,8 @@ $proxy = $factory->createProxy(new Kitchen()); $proxy->sweets; ?> --EXPECTF-- +Deprecated: Kitchen implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 5 + +Deprecated: ProxyManagerGeneratedProxy\__PM__\Kitchen\Generated%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s + %SFatal error:%sCannot access protected property %s::$sweets in %a diff --git a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-unset.phpt b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-unset.phpt index 3a41811bc..a528d36f8 100644 --- a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-unset.phpt +++ b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-unset.phpt @@ -9,12 +9,12 @@ class Kitchen implements \Serializable { protected $sweets = 'candy'; - function serialize() + function serialize(): ?string { return $this->sweets; } - function unserialize($serialized) + function unserialize(string $serialized): void { $this->sweets = $serialized; } @@ -27,4 +27,8 @@ $proxy = $factory->createProxy(new Kitchen()); unset($proxy->sweets); ?> --EXPECTF-- +Deprecated: Kitchen implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 5 + +Deprecated: ProxyManagerGeneratedProxy\__PM__\Kitchen\Generated%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s + %SFatal error:%sCannot %s property%sin %a diff --git a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-write.phpt b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-write.phpt index 801015526..5ba245c43 100644 --- a/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-write.phpt +++ b/tests/language-feature-scripts/access-interceptor-scope-localizer-serialized-class-protected-property-write.phpt @@ -9,12 +9,12 @@ class Kitchen implements \Serializable { protected $sweets = 'candy'; - function serialize() + function serialize(): ?string { return $this->sweets; } - function unserialize($serialized) + function unserialize(string $serialized): void { $this->sweets = $serialized; } @@ -27,4 +27,8 @@ $proxy = $factory->createProxy(new Kitchen()); $proxy->sweets = 'stolen'; ?> --EXPECTF-- +Deprecated: Kitchen implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 5 + +Deprecated: ProxyManagerGeneratedProxy\__PM__\Kitchen\Generated%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s + %SFatal error:%sCannot %s property%sin %a From 475c0143e4d308cdd25c195a5e3fd0af4c9c9f00 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 1 Mar 2022 18:01:40 +0100 Subject: [PATCH 3/4] Generate tentative types when appropriate --- .../Generator/MethodGenerator.php | 65 +++++++++++++++++-- ...ing-value-holder-internal-php-classes.phpt | 4 +- 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/ProxyManager/Generator/MethodGenerator.php b/src/ProxyManager/Generator/MethodGenerator.php index bcc9d0b51..4d02d9245 100644 --- a/src/ProxyManager/Generator/MethodGenerator.php +++ b/src/ProxyManager/Generator/MethodGenerator.php @@ -7,12 +7,16 @@ use Laminas\Code\Generator\DocBlockGenerator; use Laminas\Code\Generator\MethodGenerator as LaminasMethodGenerator; use Laminas\Code\Reflection\MethodReflection; +use ReflectionException; +use ReflectionMethod; /** * Method generator that fixes minor quirks in ZF2's method generator */ class MethodGenerator extends LaminasMethodGenerator { + protected bool $hasTentativeReturnType = false; + /** * @return static */ @@ -24,15 +28,68 @@ public static function fromReflectionWithoutBodyAndDocBlock(MethodReflection $re $method->setInterface(false); $method->setBody(''); + /** @var callable(ReflectionMethod) : ReflectionMethod $getPrototype */ + $getPrototype = (new ReflectionMethod(ReflectionMethod::class, 'getPrototype'))->invoke(...); + + while (true) { + if ($reflectionMethod->hasTentativeReturnType()) { + $method->hasTentativeReturnType = true; + break; + } + + if ($reflectionMethod->isAbstract()) { + break; + } + + try { + $reflectionMethod = $getPrototype($reflectionMethod); + } catch (ReflectionException $e) { + break; + } + } + return $method; } - /** - * {@inheritDoc} override needed to specify type in more detail - */ public function getDocBlock(): ?DocBlockGenerator { - return parent::getDocBlock(); + $docBlock = parent::getDocBlock(); + + if (! $this->hasTentativeReturnType) { + return $docBlock; + } + + if ($docBlock === null) { + return new class ($this->getIndentation()) extends DocBlockGenerator { + public function __construct(string $indentation) + { + $this->setIndentation($indentation); + } + + public function generate(): string + { + return $this->getIndentation() . '#[\ReturnTypeWillChange]' . self::LINE_FEED; + } + }; + } + + return new class ($docBlock) extends DocBlockGenerator { + public function __construct(DocBlockGenerator $docBlock) + { + $this->setShortDescription($docBlock->getShortDescription()); + $this->setLongDescription($docBlock->getLongDescription()); + $this->setTags($docBlock->getTags()); + $this->setWordWrap($docBlock->getWordWrap()); + $this->setSourceDirty($docBlock->isSourceDirty()); + $this->setIndentation($docBlock->getIndentation()); + $this->setSourceContent($docBlock->getSourceContent()); + } + + public function generate(): string + { + return parent::generate() . $this->getIndentation() . '#[\ReturnTypeWillChange]' . self::LINE_FEED; + } + }; } /** diff --git a/tests/language-feature-scripts/lazy-loading-value-holder-internal-php-classes.phpt b/tests/language-feature-scripts/lazy-loading-value-holder-internal-php-classes.phpt index e14b109d6..fcf8e7bd4 100644 --- a/tests/language-feature-scripts/lazy-loading-value-holder-internal-php-classes.phpt +++ b/tests/language-feature-scripts/lazy-loading-value-holder-internal-php-classes.phpt @@ -12,9 +12,11 @@ class PharMock extends Phar { } - public function compress($compression_type, $file_ext = null) + public function compress($compression_type, $file_ext = null): ?Phar { echo $compression_type; + + return null; } } From 59f78f52c5a7902a864686c77cd1124d9044ebac Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 27 Apr 2022 15:54:23 -0700 Subject: [PATCH 4/4] Fix enums and new in initializers as default values on PHP 8.1 --- .../Factory/AbstractBaseFactory.php | 2 +- src/ProxyManager/Generator/ClassGenerator.php | 38 ++++++- src/ProxyManager/Generator/ValueGenerator.php | 76 +++++++++++++ .../MethodGenerator/CallInitializer.php | 3 +- .../MethodGenerator/RemoteObjectMethod.php | 28 +++-- .../FatalPreventionFunctionalTest.php | 2 +- .../MultipleProxyGenerationTest.php | 2 + .../Functional/RemoteObjectFunctionalTest.php | 13 +++ .../BaseGeneratorStrategyTest.php | 2 +- .../EvaluatingGeneratorStrategyTest.php | 2 +- .../FileWriterGeneratorStrategyTest.php | 2 +- .../AbstractProxyGeneratorTest.php | 4 +- .../AccessInterceptorScopeLocalizerTest.php | 2 +- .../MethodGenerator/CallInitializerTest.php | 102 +++++++----------- .../LazyLoadingGhostGeneratorTest.php | 2 +- .../NullObjectGeneratorTest.php | 4 +- .../RemoteObjectMethodTest.php | 27 +++-- .../RemoteObjectGeneratorTest.php | 4 +- .../ClassWithPhp81Defaults.php | 24 +++++ .../RemoteProxy/FooEnum.php | 10 ++ ...emoteServiceWithPhp81DefaultsInterface.php | 15 +++ 21 files changed, 258 insertions(+), 106 deletions(-) create mode 100644 src/ProxyManager/Generator/ValueGenerator.php create mode 100644 tests/ProxyManagerTestAsset/ClassWithPhp81Defaults.php create mode 100644 tests/ProxyManagerTestAsset/RemoteProxy/FooEnum.php create mode 100644 tests/ProxyManagerTestAsset/RemoteProxy/RemoteServiceWithPhp81DefaultsInterface.php diff --git a/src/ProxyManager/Factory/AbstractBaseFactory.php b/src/ProxyManager/Factory/AbstractBaseFactory.php index 005249931..37ce2585b 100644 --- a/src/ProxyManager/Factory/AbstractBaseFactory.php +++ b/src/ProxyManager/Factory/AbstractBaseFactory.php @@ -4,9 +4,9 @@ namespace ProxyManager\Factory; -use Laminas\Code\Generator\ClassGenerator; use OutOfBoundsException; use ProxyManager\Configuration; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\ProxyGenerator\ProxyGeneratorInterface; use ProxyManager\Signature\Exception\InvalidSignatureException; use ProxyManager\Signature\Exception\MissingSignatureException; diff --git a/src/ProxyManager/Generator/ClassGenerator.php b/src/ProxyManager/Generator/ClassGenerator.php index fd014334f..5e5bea903 100644 --- a/src/ProxyManager/Generator/ClassGenerator.php +++ b/src/ProxyManager/Generator/ClassGenerator.php @@ -5,14 +5,48 @@ namespace ProxyManager\Generator; use Laminas\Code\Generator\ClassGenerator as LaminasClassGenerator; +use ReflectionParameter; + +use function method_exists; /** * Class generator that ensures that interfaces/classes that are implemented/extended are FQCNs * * @internal do not use this in your code: it is only here for internal use - * @deprecated this class was in use due to parent implementation not receiving prompt bugfixes, but - * `laminas/laminas-code` is actively maintained and receives quick release iterations. */ class ClassGenerator extends LaminasClassGenerator { + public function generate(): string + { + $extendedClass = $this->getExtendedClass(); + + foreach ($this->getMethods() as $method) { + $class = $extendedClass; + + if ($class === null) { + foreach ($this->getImplementedInterfaces() as $interface) { + if (method_exists($interface, $method->getName())) { + $class = $interface; + break; + } + } + } + + if ($class === null || ! method_exists($class, $method->getName())) { + continue; + } + + foreach ($method->getParameters() as $parameter) { + $default = $parameter->getDefaultValue(); + + if ($default === null) { + continue; + } + + $parameter->setDefaultValue(new ValueGenerator($default, new ReflectionParameter([$class, $method->getName()], $parameter->getName()))); + } + } + + return parent::generate(); + } } diff --git a/src/ProxyManager/Generator/ValueGenerator.php b/src/ProxyManager/Generator/ValueGenerator.php new file mode 100644 index 000000000..4266758d1 --- /dev/null +++ b/src/ProxyManager/Generator/ValueGenerator.php @@ -0,0 +1,76 @@ +value = $value->value; + $this->type = $value->type; + $this->arrayDepth = $value->arrayDepth; + $this->outputMode = $value->outputMode; + $this->allowedTypes = $value->allowedTypes; + $this->constants = $value->constants; + $this->isSourceDirty = $value->isSourceDirty; + $this->indentation = $value->indentation; + $this->sourceContent = $value->sourceContent; + } else { + parent::__construct($value, parent::TYPE_AUTO, parent::OUTPUT_SINGLE_LINE); + } + + $this->reflection = $reflection; + } + + public function generate(): string + { + try { + return parent::generate(); + } catch (RuntimeException $e) { + if ($this->reflection) { + $value = rtrim(substr(explode('$' . $this->reflection->getName() . ' = ', (string) $this->reflection, 2)[1], 0, -2)); + } else { + $value = var_export($this->value, true); + } + + return self::fixExport($value); + } + } + + private static function fixExport(string $value): string + { + $parts = preg_split('{(\'(?:[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\')}', $value, -1, PREG_SPLIT_DELIM_CAPTURE); + + foreach ($parts as $i => &$part) { + if ($part === '' || $i % 2 !== 0) { + continue; + } + + $part = preg_replace('/(?(DEFINE)(?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+))(?getName(); $defaults = $property->getDeclaringClass()->getDefaultProperties(); - return var_export($defaults[$name] ?? null, true); + return (new ValueGenerator($defaults[$name] ?? null))->generate(); } } diff --git a/src/ProxyManager/ProxyGenerator/RemoteObject/MethodGenerator/RemoteObjectMethod.php b/src/ProxyManager/ProxyGenerator/RemoteObject/MethodGenerator/RemoteObjectMethod.php index 799a38067..313fd0d26 100644 --- a/src/ProxyManager/ProxyGenerator/RemoteObject/MethodGenerator/RemoteObjectMethod.php +++ b/src/ProxyManager/ProxyGenerator/RemoteObject/MethodGenerator/RemoteObjectMethod.php @@ -8,9 +8,10 @@ use Laminas\Code\Reflection\MethodReflection; use ProxyManager\Generator\MethodGenerator; use ProxyManager\Generator\Util\ProxiedMethodReturnExpression; +use ProxyManager\Generator\ValueGenerator; use ReflectionClass; -use function count; +use function sprintf; use function strtr; use function var_export; @@ -21,10 +22,10 @@ class RemoteObjectMethod extends MethodGenerator { private const TEMPLATE = <<<'PHP' -$defaultValues = #DEFAULT_VALUES#; -$declaredParameterCount = #PARAMETER_COUNT#; +$args = \func_get_args(); -$args = \func_get_args() + $defaultValues; +switch (\func_num_args()) {#DEFAULT_VALUES# +} #PROXIED_RETURN# PHP; @@ -41,16 +42,14 @@ public static function generateMethod( . ', ' . var_export($originalMethod->getName(), true) . ', $args);' . "\n\n" . ProxiedMethodReturnExpression::generate('$return', $originalMethod); - $defaultValues = self::getDefaultValuesForMethod($originalMethod); - $declaredParameterCount = count($originalMethod->getParameters()); + $defaultValues = self::getDefaultValuesForMethod($originalMethod); $method->setBody( strtr( self::TEMPLATE, [ '#PROXIED_RETURN#' => $proxiedReturn, - '#DEFAULT_VALUES#' => var_export($defaultValues, true), - '#PARAMETER_COUNT#' => var_export($declaredParameterCount, true), + '#DEFAULT_VALUES#' => $defaultValues, ] ) ); @@ -58,14 +57,13 @@ public static function generateMethod( return $method; } - /** @psalm-return list */ - private static function getDefaultValuesForMethod(MethodReflection $originalMethod): array + private static function getDefaultValuesForMethod(MethodReflection $originalMethod): string { - $defaultValues = []; - foreach ($originalMethod->getParameters() as $parameter) { + $defaultValues = ''; + foreach ($originalMethod->getParameters() as $i => $parameter) { if ($parameter->isOptional() && $parameter->isDefaultValueAvailable()) { - /** @psalm-var int|float|bool|array|string|null */ - $defaultValues[] = $parameter->getDefaultValue(); + $default = new ValueGenerator($parameter->getDefaultValue(), $parameter); + $defaultValues .= sprintf("\n case %d: \$args[] = %s;", $i, $default->generate()); continue; } @@ -73,7 +71,7 @@ private static function getDefaultValuesForMethod(MethodReflection $originalMeth continue; } - $defaultValues[] = null; + $defaultValues .= sprintf("\n case %d: \$args[] = null;", $i); } return $defaultValues; diff --git a/tests/ProxyManagerTest/Functional/FatalPreventionFunctionalTest.php b/tests/ProxyManagerTest/Functional/FatalPreventionFunctionalTest.php index bb2a6feb9..1cb3a7338 100644 --- a/tests/ProxyManagerTest/Functional/FatalPreventionFunctionalTest.php +++ b/tests/ProxyManagerTest/Functional/FatalPreventionFunctionalTest.php @@ -4,9 +4,9 @@ namespace ProxyManagerTest\Functional; -use Laminas\Code\Generator\ClassGenerator; use PHPUnit\Framework\TestCase; use ProxyManager\Exception\ExceptionInterface; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy; use ProxyManager\Proxy\ProxyInterface; use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizerGenerator; diff --git a/tests/ProxyManagerTest/Functional/MultipleProxyGenerationTest.php b/tests/ProxyManagerTest/Functional/MultipleProxyGenerationTest.php index f3182ccea..a9b46b215 100644 --- a/tests/ProxyManagerTest/Functional/MultipleProxyGenerationTest.php +++ b/tests/ProxyManagerTest/Functional/MultipleProxyGenerationTest.php @@ -22,6 +22,7 @@ use ProxyManagerTestAsset\ClassWithMixedTypedProperties; use ProxyManagerTestAsset\ClassWithParentHint; use ProxyManagerTestAsset\ClassWithPhp80TypedMethods; +use ProxyManagerTestAsset\ClassWithPhp81Defaults; use ProxyManagerTestAsset\ClassWithPrivateProperties; use ProxyManagerTestAsset\ClassWithProtectedProperties; use ProxyManagerTestAsset\ClassWithPublicProperties; @@ -123,6 +124,7 @@ public function getTestedClasses(): array [new ReturnTypeHintedClass()], [new VoidMethodTypeHintedClass()], [new ClassWithPhp80TypedMethods()], + [new ClassWithPhp81Defaults()], ]; } } diff --git a/tests/ProxyManagerTest/Functional/RemoteObjectFunctionalTest.php b/tests/ProxyManagerTest/Functional/RemoteObjectFunctionalTest.php index 857daabfe..4ca560468 100644 --- a/tests/ProxyManagerTest/Functional/RemoteObjectFunctionalTest.php +++ b/tests/ProxyManagerTest/Functional/RemoteObjectFunctionalTest.php @@ -18,12 +18,15 @@ use ProxyManagerTestAsset\OtherObjectAccessClass; use ProxyManagerTestAsset\RemoteProxy\BazServiceInterface; use ProxyManagerTestAsset\RemoteProxy\Foo; +use ProxyManagerTestAsset\RemoteProxy\FooEnum; use ProxyManagerTestAsset\RemoteProxy\FooServiceInterface; use ProxyManagerTestAsset\RemoteProxy\RemoteServiceWithDefaultsAndVariadicArguments; use ProxyManagerTestAsset\RemoteProxy\RemoteServiceWithDefaultsInterface; +use ProxyManagerTestAsset\RemoteProxy\RemoteServiceWithPhp81DefaultsInterface; use ProxyManagerTestAsset\RemoteProxy\VariadicArgumentsServiceInterface; use ProxyManagerTestAsset\VoidCounter; use ReflectionClass; +use stdClass; use function assert; use function is_callable; @@ -267,6 +270,16 @@ public function getProxyMethods(): array ], 200, ], + 'when using php8.1 defaults' => [ + RemoteServiceWithPhp81DefaultsInterface::class, + 'php81Defaults', + [], + [ + FooEnum::bar, + new stdClass(), + ], + 200, + ], ]; } diff --git a/tests/ProxyManagerTest/GeneratorStrategy/BaseGeneratorStrategyTest.php b/tests/ProxyManagerTest/GeneratorStrategy/BaseGeneratorStrategyTest.php index ac42d8e61..a9d110f79 100644 --- a/tests/ProxyManagerTest/GeneratorStrategy/BaseGeneratorStrategyTest.php +++ b/tests/ProxyManagerTest/GeneratorStrategy/BaseGeneratorStrategyTest.php @@ -4,8 +4,8 @@ namespace ProxyManagerTest\GeneratorStrategy; -use Laminas\Code\Generator\ClassGenerator; use PHPUnit\Framework\TestCase; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\Generator\Util\UniqueIdentifierGenerator; use ProxyManager\GeneratorStrategy\BaseGeneratorStrategy; diff --git a/tests/ProxyManagerTest/GeneratorStrategy/EvaluatingGeneratorStrategyTest.php b/tests/ProxyManagerTest/GeneratorStrategy/EvaluatingGeneratorStrategyTest.php index 5c617423c..ca554a143 100644 --- a/tests/ProxyManagerTest/GeneratorStrategy/EvaluatingGeneratorStrategyTest.php +++ b/tests/ProxyManagerTest/GeneratorStrategy/EvaluatingGeneratorStrategyTest.php @@ -4,8 +4,8 @@ namespace ProxyManagerTest\GeneratorStrategy; -use Laminas\Code\Generator\ClassGenerator; use PHPUnit\Framework\TestCase; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\Generator\Util\UniqueIdentifierGenerator; use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy; diff --git a/tests/ProxyManagerTest/GeneratorStrategy/FileWriterGeneratorStrategyTest.php b/tests/ProxyManagerTest/GeneratorStrategy/FileWriterGeneratorStrategyTest.php index b244176ae..6e54d0718 100644 --- a/tests/ProxyManagerTest/GeneratorStrategy/FileWriterGeneratorStrategyTest.php +++ b/tests/ProxyManagerTest/GeneratorStrategy/FileWriterGeneratorStrategyTest.php @@ -6,10 +6,10 @@ use Closure; use ErrorException; -use Laminas\Code\Generator\ClassGenerator; use PHPUnit\Framework\TestCase; use ProxyManager\Exception\FileNotWritableException; use ProxyManager\FileLocator\FileLocatorInterface; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\Generator\Util\UniqueIdentifierGenerator; use ProxyManager\GeneratorStrategy\FileWriterGeneratorStrategy; diff --git a/tests/ProxyManagerTest/ProxyGenerator/AbstractProxyGeneratorTest.php b/tests/ProxyManagerTest/ProxyGenerator/AbstractProxyGeneratorTest.php index a15763941..c22ef13a0 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/AbstractProxyGeneratorTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/AbstractProxyGeneratorTest.php @@ -4,8 +4,8 @@ namespace ProxyManagerTest\ProxyGenerator; -use Laminas\Code\Generator\ClassGenerator; use PHPUnit\Framework\TestCase; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\Generator\Util\UniqueIdentifierGenerator; use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy; use ProxyManager\ProxyGenerator\ProxyGeneratorInterface; @@ -18,6 +18,7 @@ use ProxyManagerTestAsset\ClassWithMixedReferenceableTypedProperties; use ProxyManagerTestAsset\ClassWithMixedTypedProperties; use ProxyManagerTestAsset\ClassWithPhp80TypedMethods; +use ProxyManagerTestAsset\ClassWithPhp81Defaults; use ProxyManagerTestAsset\IterableMethodTypeHintedInterface; use ProxyManagerTestAsset\ObjectMethodTypeHintedInterface; use ProxyManagerTestAsset\ReturnTypeHintedClass; @@ -101,6 +102,7 @@ public function getTestedImplementations(): array [IterableMethodTypeHintedInterface::class], [ObjectMethodTypeHintedInterface::class], [ClassWithPhp80TypedMethods::class], + [ClassWithPhp81Defaults::class], ]; } } diff --git a/tests/ProxyManagerTest/ProxyGenerator/AccessInterceptorScopeLocalizerTest.php b/tests/ProxyManagerTest/ProxyGenerator/AccessInterceptorScopeLocalizerTest.php index c0487b374..0541e7953 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/AccessInterceptorScopeLocalizerTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/AccessInterceptorScopeLocalizerTest.php @@ -4,9 +4,9 @@ namespace ProxyManagerTest\ProxyGenerator; -use Laminas\Code\Generator\ClassGenerator; use ProxyManager\Exception\InvalidProxiedClassException; use ProxyManager\Exception\UnsupportedProxiedClassException; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\Proxy\AccessInterceptorInterface; use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizerGenerator; use ProxyManager\ProxyGenerator\ProxyGeneratorInterface; diff --git a/tests/ProxyManagerTest/ProxyGenerator/LazyLoadingGhost/MethodGenerator/CallInitializerTest.php b/tests/ProxyManagerTest/ProxyGenerator/LazyLoadingGhost/MethodGenerator/CallInitializerTest.php index d450ddf64..c393ce8bb 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/LazyLoadingGhost/MethodGenerator/CallInitializerTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/LazyLoadingGhost/MethodGenerator/CallInitializerTest.php @@ -113,98 +113,74 @@ public function testBodyStructureWithTypedProperties(): void $this->track = true; $this->publicUnTypedProperty = 'publicUnTypedProperty'; -$this->publicUnTypedPropertyWithoutDefaultValue = NULL; +$this->publicUnTypedPropertyWithoutDefaultValue = null; $this->publicBoolProperty = true; $this->publicNullableBoolProperty = true; -$this->publicNullableBoolPropertyWithoutDefaultValue = NULL; +$this->publicNullableBoolPropertyWithoutDefaultValue = null; $this->publicIntProperty = 123; $this->publicNullableIntProperty = 123; -$this->publicNullableIntPropertyWithoutDefaultValue = NULL; +$this->publicNullableIntPropertyWithoutDefaultValue = null; $this->publicFloatProperty = 123.456; $this->publicNullableFloatProperty = 123.456; -$this->publicNullableFloatPropertyWithoutDefaultValue = NULL; +$this->publicNullableFloatPropertyWithoutDefaultValue = null; $this->publicStringProperty = 'publicStringProperty'; $this->publicNullableStringProperty = 'publicStringProperty'; -$this->publicNullableStringPropertyWithoutDefaultValue = NULL; -$this->publicArrayProperty = array ( - 0 => 'publicArrayProperty', -); -$this->publicNullableArrayProperty = array ( - 0 => 'publicArrayProperty', -); -$this->publicNullableArrayPropertyWithoutDefaultValue = NULL; -$this->publicIterableProperty = array ( - 0 => 'publicIterableProperty', -); -$this->publicNullableIterableProperty = array ( - 0 => 'publicIterableProperty', -); -$this->publicNullableIterablePropertyWithoutDefaultValue = NULL; -$this->publicNullableObjectProperty = NULL; -$this->publicNullableClassProperty = NULL; +$this->publicNullableStringPropertyWithoutDefaultValue = null; +$this->publicArrayProperty = ['publicArrayProperty']; +$this->publicNullableArrayProperty = ['publicArrayProperty']; +$this->publicNullableArrayPropertyWithoutDefaultValue = null; +$this->publicIterableProperty = ['publicIterableProperty']; +$this->publicNullableIterableProperty = ['publicIterableProperty']; +$this->publicNullableIterablePropertyWithoutDefaultValue = null; +$this->publicNullableObjectProperty = null; +$this->publicNullableClassProperty = null; $this->protectedUnTypedProperty = 'protectedUnTypedProperty'; -$this->protectedUnTypedPropertyWithoutDefaultValue = NULL; +$this->protectedUnTypedPropertyWithoutDefaultValue = null; $this->protectedBoolProperty = true; $this->protectedNullableBoolProperty = true; -$this->protectedNullableBoolPropertyWithoutDefaultValue = NULL; +$this->protectedNullableBoolPropertyWithoutDefaultValue = null; $this->protectedIntProperty = 123; $this->protectedNullableIntProperty = 123; -$this->protectedNullableIntPropertyWithoutDefaultValue = NULL; +$this->protectedNullableIntPropertyWithoutDefaultValue = null; $this->protectedFloatProperty = 123.456; $this->protectedNullableFloatProperty = 123.456; -$this->protectedNullableFloatPropertyWithoutDefaultValue = NULL; +$this->protectedNullableFloatPropertyWithoutDefaultValue = null; $this->protectedStringProperty = 'protectedStringProperty'; $this->protectedNullableStringProperty = 'protectedStringProperty'; -$this->protectedNullableStringPropertyWithoutDefaultValue = NULL; -$this->protectedArrayProperty = array ( - 0 => 'protectedArrayProperty', -); -$this->protectedNullableArrayProperty = array ( - 0 => 'protectedArrayProperty', -); -$this->protectedNullableArrayPropertyWithoutDefaultValue = NULL; -$this->protectedIterableProperty = array ( - 0 => 'protectedIterableProperty', -); -$this->protectedNullableIterableProperty = array ( - 0 => 'protectedIterableProperty', -); -$this->protectedNullableIterablePropertyWithoutDefaultValue = NULL; -$this->protectedNullableObjectProperty = NULL; -$this->protectedNullableClassProperty = NULL; +$this->protectedNullableStringPropertyWithoutDefaultValue = null; +$this->protectedArrayProperty = ['protectedArrayProperty']; +$this->protectedNullableArrayProperty = ['protectedArrayProperty']; +$this->protectedNullableArrayPropertyWithoutDefaultValue = null; +$this->protectedIterableProperty = ['protectedIterableProperty']; +$this->protectedNullableIterableProperty = ['protectedIterableProperty']; +$this->protectedNullableIterablePropertyWithoutDefaultValue = null; +$this->protectedNullableObjectProperty = null; +$this->protectedNullableClassProperty = null; static $cacheProxyManagerTestAsset_ClassWithMixedTypedProperties; $cacheProxyManagerTestAsset_ClassWithMixedTypedProperties ?? $cacheProxyManagerTestAsset_ClassWithMixedTypedProperties = \Closure::bind(static function ($instance) { $instance->privateUnTypedProperty = 'privateUnTypedProperty'; - $instance->privateUnTypedPropertyWithoutDefaultValue = NULL; + $instance->privateUnTypedPropertyWithoutDefaultValue = null; $instance->privateBoolProperty = true; $instance->privateNullableBoolProperty = true; - $instance->privateNullableBoolPropertyWithoutDefaultValue = NULL; + $instance->privateNullableBoolPropertyWithoutDefaultValue = null; $instance->privateIntProperty = 123; $instance->privateNullableIntProperty = 123; - $instance->privateNullableIntPropertyWithoutDefaultValue = NULL; + $instance->privateNullableIntPropertyWithoutDefaultValue = null; $instance->privateFloatProperty = 123.456; $instance->privateNullableFloatProperty = 123.456; - $instance->privateNullableFloatPropertyWithoutDefaultValue = NULL; + $instance->privateNullableFloatPropertyWithoutDefaultValue = null; $instance->privateStringProperty = 'privateStringProperty'; $instance->privateNullableStringProperty = 'privateStringProperty'; - $instance->privateNullableStringPropertyWithoutDefaultValue = NULL; - $instance->privateArrayProperty = array ( - 0 => 'privateArrayProperty', -); - $instance->privateNullableArrayProperty = array ( - 0 => 'privateArrayProperty', -); - $instance->privateNullableArrayPropertyWithoutDefaultValue = NULL; - $instance->privateIterableProperty = array ( - 0 => 'privateIterableProperty', -); - $instance->privateNullableIterableProperty = array ( - 0 => 'privateIterableProperty', -); - $instance->privateNullableIterablePropertyWithoutDefaultValue = NULL; - $instance->privateNullableObjectProperty = NULL; - $instance->privateNullableClassProperty = NULL; + $instance->privateNullableStringPropertyWithoutDefaultValue = null; + $instance->privateArrayProperty = ['privateArrayProperty']; + $instance->privateNullableArrayProperty = ['privateArrayProperty']; + $instance->privateNullableArrayPropertyWithoutDefaultValue = null; + $instance->privateIterableProperty = ['privateIterableProperty']; + $instance->privateNullableIterableProperty = ['privateIterableProperty']; + $instance->privateNullableIterablePropertyWithoutDefaultValue = null; + $instance->privateNullableObjectProperty = null; + $instance->privateNullableClassProperty = null; }, null, 'ProxyManagerTestAsset\\ClassWithMixedTypedProperties'); $cacheProxyManagerTestAsset_ClassWithMixedTypedProperties($this); diff --git a/tests/ProxyManagerTest/ProxyGenerator/LazyLoadingGhostGeneratorTest.php b/tests/ProxyManagerTest/ProxyGenerator/LazyLoadingGhostGeneratorTest.php index 3c0147e18..5c8ad4505 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/LazyLoadingGhostGeneratorTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/LazyLoadingGhostGeneratorTest.php @@ -4,8 +4,8 @@ namespace ProxyManagerTest\ProxyGenerator; -use Laminas\Code\Generator\ClassGenerator; use ProxyManager\Exception\InvalidProxiedClassException; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\Proxy\GhostObjectInterface; use ProxyManager\ProxyGenerator\LazyLoadingGhostGenerator; use ProxyManager\ProxyGenerator\ProxyGeneratorInterface; diff --git a/tests/ProxyManagerTest/ProxyGenerator/NullObjectGeneratorTest.php b/tests/ProxyManagerTest/ProxyGenerator/NullObjectGeneratorTest.php index 1eae41bb9..40fc993a8 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/NullObjectGeneratorTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/NullObjectGeneratorTest.php @@ -4,7 +4,7 @@ namespace ProxyManagerTest\ProxyGenerator; -use Laminas\Code\Generator\ClassGenerator; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\Generator\Util\UniqueIdentifierGenerator; use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy; use ProxyManager\Proxy\NullObjectInterface; @@ -19,6 +19,7 @@ use ProxyManagerTestAsset\ClassWithMixedReferenceableTypedProperties; use ProxyManagerTestAsset\ClassWithMixedTypedProperties; use ProxyManagerTestAsset\ClassWithPhp80TypedMethods; +use ProxyManagerTestAsset\ClassWithPhp81Defaults; use ReflectionClass; use ReflectionMethod; @@ -120,6 +121,7 @@ public function getTestedImplementations(): array [ClassWithMixedReferenceableTypedProperties::class], [BaseInterface::class], [ClassWithPhp80TypedMethods::class], + [ClassWithPhp81Defaults::class], ]; } } diff --git a/tests/ProxyManagerTest/ProxyGenerator/RemoteObject/MethodGenerator/RemoteObjectMethodTest.php b/tests/ProxyManagerTest/ProxyGenerator/RemoteObject/MethodGenerator/RemoteObjectMethodTest.php index 7eb990877..f4849d45b 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/RemoteObject/MethodGenerator/RemoteObjectMethodTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/RemoteObject/MethodGenerator/RemoteObjectMethodTest.php @@ -40,13 +40,12 @@ public function testBodyStructureWithParameters(): void self::assertSame('publicByReferenceParameterMethod', $method->getName()); self::assertCount(2, $method->getParameters()); self::assertSame( - '$defaultValues = array ( - 0 => NULL, - 1 => NULL, -); -$declaredParameterCount = 2; + '$args = \func_get_args(); -$args = \func_get_args() + $defaultValues; +switch (\func_num_args()) { + case 0: $args[] = null; + case 1: $args[] = null; +} $return = $this->adapter->call(\'Laminas\\\\Code\\\\Generator\\\\PropertyGenerator\', \'publicByReferenceParameterMethod\', $args); @@ -74,12 +73,11 @@ public function testBodyStructureWithArrayParameter(): void self::assertSame('publicArrayHintedMethod', $method->getName()); self::assertCount(1, $method->getParameters()); self::assertSame( - "\$defaultValues = array ( - 0 => NULL, -); -\$declaredParameterCount = 1; + "\$args = \\func_get_args(); -\$args = \\func_get_args() + \$defaultValues; +switch (\\func_num_args()) { + case 0: \$args[] = null; +} \$return = \$this->adapter->call('Laminas\\\\Code\\\\Generator\\\\PropertyGenerator', 'publicArrayHintedMethod', \$args); @@ -107,11 +105,10 @@ public function testBodyStructureWithoutParameters(): void self::assertSame('publicMethod', $method->getName()); self::assertCount(0, $method->getParameters()); self::assertSame( - "\$defaultValues = array ( -); -\$declaredParameterCount = 0; + "\$args = \\func_get_args(); -\$args = \\func_get_args() + \$defaultValues; +switch (\\func_num_args()) { +} \$return = \$this->adapter->call('Laminas\\\\Code\\\\Generator\\\\PropertyGenerator', 'publicMethod', \$args); diff --git a/tests/ProxyManagerTest/ProxyGenerator/RemoteObjectGeneratorTest.php b/tests/ProxyManagerTest/ProxyGenerator/RemoteObjectGeneratorTest.php index 742850eae..3d5bb3ffa 100644 --- a/tests/ProxyManagerTest/ProxyGenerator/RemoteObjectGeneratorTest.php +++ b/tests/ProxyManagerTest/ProxyGenerator/RemoteObjectGeneratorTest.php @@ -4,7 +4,7 @@ namespace ProxyManagerTest\ProxyGenerator; -use Laminas\Code\Generator\ClassGenerator; +use ProxyManager\Generator\ClassGenerator; use ProxyManager\Generator\Util\UniqueIdentifierGenerator; use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy; use ProxyManager\Proxy\RemoteObjectInterface; @@ -18,6 +18,7 @@ use ProxyManagerTestAsset\ClassWithMixedReferenceableTypedProperties; use ProxyManagerTestAsset\ClassWithMixedTypedProperties; use ProxyManagerTestAsset\ClassWithPhp80TypedMethods; +use ProxyManagerTestAsset\ClassWithPhp81Defaults; use ReflectionClass; use function array_diff; @@ -90,6 +91,7 @@ public function getTestedImplementations(): array [ClassWithMixedReferenceableTypedProperties::class], [BaseInterface::class], [ClassWithPhp80TypedMethods::class], + [ClassWithPhp81Defaults::class], ]; } } diff --git a/tests/ProxyManagerTestAsset/ClassWithPhp81Defaults.php b/tests/ProxyManagerTestAsset/ClassWithPhp81Defaults.php new file mode 100644 index 000000000..c7894d7b9 --- /dev/null +++ b/tests/ProxyManagerTestAsset/ClassWithPhp81Defaults.php @@ -0,0 +1,24 @@ +