diff --git a/.laminas-ci.json b/.laminas-ci.json index 623a8eca..cc00d67d 100644 --- a/.laminas-ci.json +++ b/.laminas-ci.json @@ -1,5 +1,5 @@ { "ignore_php_platform_requirements": { - "8.3": true + "8.4": true } } diff --git a/composer.json b/composer.json index 7fe13660..840c8604 100644 --- a/composer.json +++ b/composer.json @@ -28,22 +28,20 @@ "extra": { }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "container-interop/container-interop": "^1.2", "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-http": "^2.15", - "laminas/laminas-modulemanager": "^2.8", + "laminas/laminas-modulemanager": "^2.16", "laminas/laminas-router": "^3.11.1", "laminas/laminas-servicemanager": "^3.20.0", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-view": "^2.14" + "laminas/laminas-stdlib": "^3.19", + "laminas/laminas-view": "^2.18.0" }, "require-dev": { "laminas/laminas-coding-standard": "^2.5.0", "laminas/laminas-json": "^3.6", - "phpspec/prophecy": "^1.17.0", - "phpspec/prophecy-phpunit": "^2.0.2", - "phpunit/phpunit": "^9.6.13", + "phpunit/phpunit": "^10.5.38", "webmozart/assert": "^1.11" }, "suggest": { diff --git a/composer.lock b/composer.lock index dc1d1c9d..2cc9bd4a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "92a38fc09e283dd8889ace14971a0eba", + "content-hash": "6cbd47c7754a1c96a5080328fde70c2c", "packages": [ { "name": "brick/varexporter", @@ -57,22 +57,22 @@ }, { "name": "laminas/laminas-config", - "version": "3.9.0", + "version": "3.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-config.git", - "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa" + "reference": "b79e7dbd01889e4574526cf8d2b18f9d5b18384c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config/zipball/e53717277f6c22b1c697a46473b9a5ec9a438efa", - "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa", + "url": "https://api.github.com/repos/laminas/laminas-config/zipball/b79e7dbd01889e4574526cf8d2b18f9d5b18384c", + "reference": "b79e7dbd01889e4574526cf8d2b18f9d5b18384c", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/container": "^1.0" }, "conflict": { @@ -80,11 +80,11 @@ "zendframework/zend-config": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-filter": "~2.23.0", - "laminas/laminas-i18n": "~2.19.0", - "laminas/laminas-servicemanager": "~3.19.0", - "phpunit/phpunit": "~9.5.25" + "laminas/laminas-coding-standard": "^3.0.1", + "laminas/laminas-filter": "^2.39.0", + "laminas/laminas-i18n": "^2.29.0", + "laminas/laminas-servicemanager": "^3.23.0", + "phpunit/phpunit": "^10.5.38" }, "suggest": { "laminas/laminas-filter": "^2.7.2; install if you want to use the Filter processor", @@ -121,37 +121,37 @@ "type": "community_bridge" } ], - "time": "2023-09-19T12:02:54+00:00" + "time": "2024-11-17T22:10:53+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.13.0", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" + "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/0f7cb975f4443cf22f33408925c231225cfba8cb", + "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.27.0", - "laminas/laminas-coding-standard": "~2.5.0", + "infection/infection": "^0.27.9", + "laminas/laminas-coding-standard": "~3.0.0", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.7", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.9" + "phpunit/phpunit": "^9.6.16", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.21.1" }, "type": "library", "autoload": { @@ -183,7 +183,7 @@ "type": "community_bridge" } ], - "time": "2023-10-10T08:35:13+00:00" + "time": "2024-10-24T10:12:53+00:00" }, { "name": "laminas/laminas-eventmanager", @@ -255,16 +255,16 @@ }, { "name": "laminas/laminas-http", - "version": "2.19.0", + "version": "2.20.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-http.git", - "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d" + "reference": "a66bfb65c698aad6ee9f10df42cb5902f2c3dec8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-http/zipball/26dd6d1177e25d970058863c2afed12bb9dbff4d", - "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/a66bfb65c698aad6ee9f10df42cb5902f2c3dec8", + "reference": "a66bfb65c698aad6ee9f10df42cb5902f2c3dec8", "shasum": "" }, "require": { @@ -272,7 +272,7 @@ "laminas/laminas-stdlib": "^3.6", "laminas/laminas-uri": "^2.11", "laminas/laminas-validator": "^2.15", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-http": "*" @@ -280,7 +280,7 @@ "require-dev": { "ext-curl": "*", "laminas/laminas-coding-standard": "~2.4.0", - "phpunit/phpunit": "^9.5.25" + "phpunit/phpunit": "^9.6.21" }, "suggest": { "paragonie/certainty": "For automated management of cacert.pem" @@ -316,31 +316,31 @@ "type": "community_bridge" } ], - "time": "2023-11-02T16:27:41+00:00" + "time": "2024-10-18T07:35:59+00:00" }, { "name": "laminas/laminas-json", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-json.git", - "reference": "53ff787b20b77197f38680c737e8dfffa846b85b" + "reference": "1931b26ac677f418f39cd0af6d0740e8f4a67d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-json/zipball/53ff787b20b77197f38680c737e8dfffa846b85b", - "reference": "53ff787b20b77197f38680c737e8dfffa846b85b", + "url": "https://api.github.com/repos/laminas/laminas-json/zipball/1931b26ac677f418f39cd0af6d0740e8f4a67d18", + "reference": "1931b26ac677f418f39cd0af6d0740e8f4a67d18", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-json": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-stdlib": "^2.7.7 || ^3.8", + "laminas/laminas-stdlib": "^2.7.7 || ^3.19", "phpunit/phpunit": "^9.5.25" }, "suggest": { @@ -377,24 +377,24 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:54:55+00:00" + "time": "2024-10-25T09:02:25+00:00" }, { "name": "laminas/laminas-loader", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12" + "reference": "f2eedd3a6e774d965158fd11946bb1eba72e298c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/e6fe952304ef40ce45cd814751ab35d42afdad12", - "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/f2eedd3a6e774d965158fd11946bb1eba72e298c", + "reference": "f2eedd3a6e774d965158fd11946bb1eba72e298c", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-loader": "*" @@ -433,20 +433,20 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:58:51+00:00" + "time": "2024-10-16T09:06:57+00:00" }, { "name": "laminas/laminas-modulemanager", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-modulemanager.git", - "reference": "8df7b237d75c04a1bc17b8f7d01eeb601cd7b7e3" + "reference": "3cd6e84ba767b43a47c6c4245a56b30ac3738c6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/8df7b237d75c04a1bc17b8f7d01eeb601cd7b7e3", - "reference": "8df7b237d75c04a1bc17b8f7d01eeb601cd7b7e3", + "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/3cd6e84ba767b43a47c6c4245a56b30ac3738c6a", + "reference": "3cd6e84ba767b43a47c6c4245a56b30ac3738c6a", "shasum": "" }, "require": { @@ -454,20 +454,21 @@ "laminas/laminas-config": "^3.7", "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-stdlib": "^3.6", - "php": "~8.1.0 || ~8.2.0|| ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "webimpress/safe-writer": "^1.0.2 || ^2.1" }, "conflict": { + "amphp/amp": "<2.6.4", "zendframework/zend-modulemanager": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.5", - "laminas/laminas-loader": "^2.10", - "laminas/laminas-mvc": "^3.6.1", - "laminas/laminas-servicemanager": "^3.22.1", - "phpunit/phpunit": "^10.4.2", + "laminas/laminas-coding-standard": "^3.0.1", + "laminas/laminas-loader": "^2.11", + "laminas/laminas-mvc": "^3.7.0", + "laminas/laminas-servicemanager": "^3.23.0", + "phpunit/phpunit": "^10.5.38", "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.15" + "vimeo/psalm": "^5.26.1" }, "suggest": { "laminas/laminas-console": "Laminas\\Console component", @@ -505,37 +506,37 @@ "type": "community_bridge" } ], - "time": "2024-06-14T14:44:50+00:00" + "time": "2024-11-17T22:29:29+00:00" }, { "name": "laminas/laminas-router", - "version": "3.13.0", + "version": "3.14.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-router.git", - "reference": "04e14e757303787c83f79298dbd4483eebacfeb9" + "reference": "5e1f5ca7fe95200661b50235c891ed3eee02d3f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-router/zipball/04e14e757303787c83f79298dbd4483eebacfeb9", - "reference": "04e14e757303787c83f79298dbd4483eebacfeb9", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/5e1f5ca7fe95200661b50235c891ed3eee02d3f0", + "reference": "5e1f5ca7fe95200661b50235c891ed3eee02d3f0", "shasum": "" }, "require": { "laminas/laminas-http": "^2.15", "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-router": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-i18n": "^2.26.0", - "phpunit/phpunit": "^10.5.11", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.22.2" + "laminas/laminas-i18n": "^2.29.0", + "phpunit/phpunit": "^10.5.36", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "suggest": { "laminas/laminas-i18n": "^2.15.0 if defining translatable HTTP path segments" @@ -576,25 +577,25 @@ "type": "community_bridge" } ], - "time": "2024-03-05T12:54:05+00:00" + "time": "2024-10-11T11:18:03+00:00" }, { "name": "laminas/laminas-servicemanager", - "version": "3.22.1", + "version": "3.23.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "de98d297d4743956a0558a6d71616979ff779328" + "reference": "a8640182b892b99767d54404d19c5c3b3699f79b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/de98d297d4743956a0558a6d71616979ff779328", - "reference": "de98d297d4743956a0558a6d71616979ff779328", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/a8640182b892b99767d54404d19c5c3b3699f79b", + "reference": "a8640182b892b99767d54404d19c5c3b3699f79b", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.17", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "laminas/laminas-stdlib": "^3.19", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/container": "^1.0" }, "conflict": { @@ -611,15 +612,15 @@ }, "require-dev": { "composer/package-versions-deprecated": "^1.11.99.5", - "friendsofphp/proxy-manager-lts": "^1.0.14", - "laminas/laminas-code": "^4.10.0", + "friendsofphp/proxy-manager-lts": "^1.0.18", + "laminas/laminas-code": "^4.14.0", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", - "mikey179/vfsstream": "^1.6.11", - "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.4", + "mikey179/vfsstream": "^1.6.12", + "phpbench/phpbench": "^1.3.1", + "phpunit/phpunit": "^10.5.36", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.8.0" + "vimeo/psalm": "^5.26.1" }, "suggest": { "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" @@ -666,34 +667,34 @@ "type": "community_bridge" } ], - "time": "2023-10-24T11:19:47+00:00" + "time": "2024-10-28T21:32:16+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.19.0", + "version": "3.20.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "6a192dd0882b514e45506f533b833b623b78fff3" + "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3", - "reference": "6a192dd0882b514e45506f533b833b623b78fff3", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/8974a1213be42c3e2f70b2c27b17f910291ab2f4", + "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.15", - "phpunit/phpunit": "^10.5.8", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.20.0" + "laminas/laminas-coding-standard": "^3.0", + "phpbench/phpbench": "^1.3.1", + "phpunit/phpunit": "^10.5.38", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "type": "library", "autoload": { @@ -725,33 +726,33 @@ "type": "community_bridge" } ], - "time": "2024-01-19T12:39:49+00:00" + "time": "2024-10-29T13:46:07+00:00" }, { "name": "laminas/laminas-uri", - "version": "2.11.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-uri.git", - "reference": "e662c685125061d3115906e5eb30f966842cc226" + "reference": "95a41a7592bacf4c648648a88b7c94b0c5c22b9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/e662c685125061d3115906e5eb30f966842cc226", - "reference": "e662c685125061d3115906e5eb30f966842cc226", + "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/95a41a7592bacf4c648648a88b7c94b0c5c22b9e", + "reference": "95a41a7592bacf4c648648a88b7c94b0c5c22b9e", "shasum": "" }, "require": { "laminas/laminas-escaper": "^2.9", "laminas/laminas-validator": "^2.39", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-uri": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.4.0", - "phpunit/phpunit": "^9.5.25" + "phpunit/phpunit": "^9.6.20" }, "type": "library", "autoload": { @@ -783,26 +784,26 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:56:55+00:00" + "time": "2024-08-03T21:22:51+00:00" }, { "name": "laminas/laminas-validator", - "version": "2.62.0", + "version": "2.64.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "83fbcf4a7986796261beb541bed09c06826446e9" + "reference": "9db115056b666b7540c951b6d4477b8e0b52b9ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/83fbcf4a7986796261beb541bed09c06826446e9", - "reference": "83fbcf4a7986796261beb541bed09c06826446e9", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/9db115056b666b7540c951b6d4477b8e0b52b9ad", + "reference": "9db115056b666b7540c951b6d4477b8e0b52b9ad", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.13", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "laminas/laminas-stdlib": "^3.19", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, "conflict": { @@ -867,7 +868,7 @@ "type": "community_bridge" } ], - "time": "2024-07-16T08:58:25+00:00" + "time": "2024-08-01T09:32:54+00:00" }, { "name": "laminas/laminas-view", @@ -971,16 +972,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.1.0", + "version": "v5.3.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", - "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", "shasum": "" }, "require": { @@ -1023,9 +1024,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" }, - "time": "2024-07-01T20:03:41+00:00" + "time": "2024-10-08T18:51:32+00:00" }, { "name": "psr/container", @@ -1264,76 +1265,6 @@ }, "time": "2022-02-04T12:51:07+00:00" }, - { - "name": "doctrine/instantiator", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-12-30T00:23:10+00:00" - }, { "name": "laminas/laminas-coding-standard", "version": "2.5.0", @@ -1392,16 +1323,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", "shasum": "" }, "require": { @@ -1440,7 +1371,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" }, "funding": [ { @@ -1448,7 +1379,7 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2024-11-08T17:47:46+00:00" }, { "name": "phar-io/manifest", @@ -1568,292 +1499,6 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "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/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "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.6.2" - }, - "time": "2022-10-14T12:47:21+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/67a759e7d8746d501c41536ba40cd9c0a07d6a87", - "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2 || ^2.0", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.* || 8.3.*", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0", - "sebastian/recursion-context": "^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "dev", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.19.0" - }, - "time": "2024-02-29T11:52:51+00:00" - }, - { - "name": "phpspec/prophecy-phpunit", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy-phpunit.git", - "reference": "16e1247e139434bce0bac09848bc5c8d882940fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/16e1247e139434bce0bac09848bc5c8d882940fc", - "reference": "16e1247e139434bce0bac09848bc5c8d882940fc", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "phpspec/prophecy": "^1.18", - "phpunit/phpunit": "^9.1 || ^10.1 || ^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\PhpUnit\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - } - ], - "description": "Integrating the Prophecy mocking library in PHPUnit test cases", - "homepage": "http://phpspec.net", - "keywords": [ - "phpunit", - "prophecy" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy-phpunit/issues", - "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.2.0" - }, - "time": "2024-03-01T08:33:58+00:00" - }, { "name": "phpstan/phpdoc-parser", "version": "1.5.1", @@ -1900,35 +1545,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -1937,7 +1582,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -1966,7 +1611,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -1974,32 +1619,32 @@ "type": "github" } ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -2026,7 +1671,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -2034,28 +1680,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -2063,7 +1709,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -2089,7 +1735,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -2097,32 +1743,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -2148,7 +1794,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -2156,32 +1803,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -2207,7 +1854,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -2215,24 +1862,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.20", + "version": "10.5.38", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "49d7820565836236411f5dc002d16dd689cde42f" + "reference": "a86773b9e887a67bc53efa9da9ad6e3f2498c132" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/49d7820565836236411f5dc002d16dd689cde42f", - "reference": "49d7820565836236411f5dc002d16dd689cde42f", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a86773b9e887a67bc53efa9da9ad6e3f2498c132", + "reference": "a86773b9e887a67bc53efa9da9ad6e3f2498c132", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.5.0 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -2242,27 +1888,26 @@ "myclabs/deep-copy": "^1.12.0", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.31", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.4", - "phpunit/php-timer": "^5.0.3", - "sebastian/cli-parser": "^1.0.2", - "sebastian/code-unit": "^1.0.8", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.6", - "sebastian/environment": "^5.1.5", - "sebastian/exporter": "^4.0.6", - "sebastian/global-state": "^5.0.7", - "sebastian/object-enumerator": "^4.0.4", - "sebastian/resource-operations": "^3.0.4", - "sebastian/type": "^3.2.1", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -2270,7 +1915,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -2302,7 +1947,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.38" }, "funding": [ { @@ -2318,32 +1963,32 @@ "type": "tidelift" } ], - "time": "2024-07-10T11:45:39+00:00" + "time": "2024-10-28T13:06:21+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -2366,7 +2011,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -2374,32 +2020,32 @@ "type": "github" } ], - "time": "2024-03-02T06:27:43+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -2422,7 +2068,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -2430,32 +2076,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -2477,7 +2123,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -2485,34 +2131,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -2551,7 +2199,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -2559,33 +2208,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.3", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -2608,7 +2257,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -2616,33 +2266,33 @@ "type": "github" } ], - "time": "2023-12-22T06:19:30+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.6", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -2674,7 +2324,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -2682,27 +2333,27 @@ "type": "github" } ], - "time": "2024-03-02T06:30:58+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -2710,7 +2361,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -2729,7 +2380,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -2737,7 +2388,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -2745,34 +2397,34 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -2814,7 +2466,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -2822,38 +2475,35 @@ "type": "github" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -2872,13 +2522,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -2886,33 +2537,33 @@ "type": "github" } ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.4", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -2935,7 +2586,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -2943,34 +2595,34 @@ "type": "github" } ], - "time": "2023-12-22T06:20:34+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -2992,7 +2644,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -3000,32 +2652,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -3047,7 +2699,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -3055,32 +2707,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -3110,61 +2762,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -3172,32 +2770,32 @@ "type": "github" } ], - "time": "2024-03-14T16:00:52+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "3.2.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3220,7 +2818,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -3228,29 +2826,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3273,7 +2871,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -3281,7 +2879,7 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "slevomat/coding-standard", @@ -3346,16 +2944,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.2", + "version": "3.11.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017" + "reference": "19473c30efe4f7b3cd42522d0b2e6e7f243c6f87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/86e5f5dd9a840c46810ebe5ff1885581c42a3017", - "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/19473c30efe4f7b3cd42522d0b2e6e7f243c6f87", + "reference": "19473c30efe4f7b3cd42522d0b2e6e7f243c6f87", "shasum": "" }, "require": { @@ -3422,7 +3020,7 @@ "type": "open_collective" } ], - "time": "2024-07-21T23:26:44+00:00" + "time": "2024-11-16T12:02:36+00:00" }, { "name": "theseer/tokenizer", @@ -3476,21 +3074,21 @@ }, { "name": "webimpress/coding-standard", - "version": "1.3.2", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/webimpress/coding-standard.git", - "reference": "710f71ac95d36d931e76b47132b599c39abfab11" + "reference": "6f6a1a90bd9e18fc8bee0660dd1d1ce68cf9fc53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/710f71ac95d36d931e76b47132b599c39abfab11", - "reference": "710f71ac95d36d931e76b47132b599c39abfab11", + "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/6f6a1a90bd9e18fc8bee0660dd1d1ce68cf9fc53", + "reference": "6f6a1a90bd9e18fc8bee0660dd1d1ce68cf9fc53", "shasum": "" }, "require": { "php": "^7.3 || ^8.0", - "squizlabs/php_codesniffer": "^3.7.2" + "squizlabs/php_codesniffer": "^3.10.3" }, "require-dev": { "phpunit/phpunit": "^9.6.15" @@ -3519,7 +3117,7 @@ ], "support": { "issues": "https://github.com/webimpress/coding-standard/issues", - "source": "https://github.com/webimpress/coding-standard/tree/1.3.2" + "source": "https://github.com/webimpress/coding-standard/tree/1.4.0" }, "funding": [ { @@ -3527,7 +3125,7 @@ "type": "github" } ], - "time": "2023-12-18T07:25:41+00:00" + "time": "2024-10-16T06:55:17+00:00" }, { "name": "webmozart/assert", @@ -3590,13 +3188,13 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, - "platform-dev": [], + "platform-dev": {}, "platform-overrides": { "php": "8.1.99" }, diff --git a/docs/book/mvc-event.md b/docs/book/mvc-event.md index 92283074..151f119a 100644 --- a/docs/book/mvc-event.md +++ b/docs/book/mvc-event.md @@ -169,7 +169,7 @@ The following listeners are only attached in a console context: Class | Priority | Method Called | Description ------------------------------------------------|---------:|-----------------------------|------------ -`Laminas\Mvc\View\Console\RouteNotFoundStrategy` | 1 | `handleRouteNotFoundError ` | Detect if an error is a "route not found" condition. If a “controller not found” or “invalid controller” error type is encountered, sets the response status code to 404. +`Laminas\Mvc\View\Console\RouteNotFoundStrategy` | 1 | `handleRouteNotFoundError` | Detect if an error is a "route not found" condition. If a “controller not found” or “invalid controller” error type is encountered, sets the response status code to 404. `Laminas\Mvc\View\Console\ExceptionStrategy` | 1 | `prepareExceptionViewModel` | Create an exception view model, and sets the status code to 404. `Laminas\Mvc\View\Console\InjectViewModelListener` | -100 | `injectViewModel` | Inserts the `ViewModel` (in this case, a `ConsoleModel`) and adds it to the `MvcEvent` object. It either (a) adds it as a child to the default, composed view model, or (b) replaces it if the result is marked as terminable. diff --git a/docs/book/plugins.md b/docs/book/plugins.md index c853e659..89cbf14c 100644 --- a/docs/book/plugins.md +++ b/docs/book/plugins.md @@ -234,13 +234,13 @@ generate a URL string from the provided parameters. It has the following signature: - `fromRoute(string $route = null, array $params = [], array $options = [], bool $reuseMatchedParams = false): string`, where: - - `$name`: the name of the route to use for URL generation. - - `$params`: Any parameter substitutions to use with the named route. - - `$options`: Options used by the router when generating the URL (e.g., `force_canonical`, `query`, etc.). - - `$reuseMatchedParams`: Whether or not to use route match parameters from the - current URL when generating the new URL. This will only affect cases where - the specified `$name` matches the currently matched route; the default is - `true`. + - `$name`: the name of the route to use for URL generation. + - `$params`: Any parameter substitutions to use with the named route. + - `$options`: Options used by the router when generating the URL (e.g., `force_canonical`, `query`, etc.). + - `$reuseMatchedParams`: Whether or not to use route match parameters from the + current URL when generating the new URL. This will only affect cases where + the specified `$name` matches the currently matched route; the default is + `true`. > ### Requires MvcEvent > diff --git a/docs/book/quick-start.md b/docs/book/quick-start.md index 800902d1..19b451ac 100644 --- a/docs/book/quick-start.md +++ b/docs/book/quick-start.md @@ -118,7 +118,7 @@ The associated class will then be instantiated and invoked. Learn more about routing [in the laminas-router documentation](https://docs.laminas.dev/laminas-router/routing). -## Test it Out! +## Test it Out Create a new vhost pointing its document root to the `public` directory of your application, and fire it up in a browser. You should see the default homepage template of [laminas-mvc-skeleton](https://github.com/laminas/laminas-mvc-skeleton). diff --git a/docs/book/send-response-event.md b/docs/book/send-response-event.md index f394ac39..89c09767 100644 --- a/docs/book/send-response-event.md +++ b/docs/book/send-response-event.md @@ -22,7 +22,7 @@ Class | Priority | Method ------------------------------------------------------------ | -------: | ------------- | ----------- `Laminas\Mvc\SendResponseListener\PhpEnvironmentResponseSender` | -1000 | `__invoke` | This is used in HTTP contexts (this is the most often used). `Laminas\Mvc\SendResponseListener\ConsoleResponseSender` | -2000 | `__invoke` | This is used in console contexts. -`Laminas\Mvc\SendResponseListener\SimpleStreamResponseSender` | -3000 | `__invoke` | +`Laminas\Mvc\SendResponseListener\SimpleStreamResponseSender` | -3000 | `__invoke` | This is used in HTTP context to pass through stream directly to output. Because each listener has negative priority, adding your own logic to modify the `Response` involves adding a new listener without priority (as priority defaults diff --git a/phpunit.xml.dist b/phpunit.xml.dist index af695d54..1b815360 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,34 +1,38 @@ - - - - ./src - - - - - - ./test/ - - - - - - disable - - - - - - - - + + + + + ./src + + diff --git a/src/Application.php b/src/Application.php index 9fc812a6..62c50953 100644 --- a/src/Application.php +++ b/src/Application.php @@ -94,9 +94,9 @@ class Application implements */ public function __construct( protected ServiceManager $serviceManager, - EventManagerInterface $events = null, - RequestInterface $request = null, - ResponseInterface $response = null + ?EventManagerInterface $events = null, + ?RequestInterface $request = null, + ?ResponseInterface $response = null ) { $this->setEventManager($events ?: $serviceManager->get('EventManager')); $this->request = $request ?: $serviceManager->get('Request'); @@ -200,7 +200,7 @@ public function setEventManager(EventManagerInterface $eventManager) { $eventManager->setIdentifiers([ self::class, - $this::class, + static::class, ]); $this->events = $eventManager; return $this; diff --git a/src/Controller/AbstractController.php b/src/Controller/AbstractController.php index c7f41c35..f38280c7 100644 --- a/src/Controller/AbstractController.php +++ b/src/Controller/AbstractController.php @@ -88,7 +88,7 @@ abstract public function onDispatch(MvcEvent $e); * @param null|Response $response * @return Response|mixed */ - public function dispatch(Request $request, Response $response = null) + public function dispatch(Request $request, ?Response $response = null) { $this->request = $request; if (! $response) { @@ -147,7 +147,7 @@ public function getResponse() */ public function setEventManager(EventManagerInterface $events) { - $className = $this::class; + $className = static::class; $identifiers = [ self::class, @@ -258,7 +258,7 @@ public function setPluginManager(PluginManager $plugins) * @param null|array $options Options to pass to plugin constructor (if not already instantiated) * @return mixed */ - public function plugin($name, array $options = null) + public function plugin($name, ?array $options = null) { return $this->getPluginManager()->get($name, $options); } diff --git a/src/Controller/AbstractRestfulController.php b/src/Controller/AbstractRestfulController.php index ea2cf490..5b3785ec 100644 --- a/src/Controller/AbstractRestfulController.php +++ b/src/Controller/AbstractRestfulController.php @@ -297,7 +297,7 @@ public function notFoundAction() * @return mixed|Response * @throws Exception\InvalidArgumentException */ - public function dispatch(Request $request, Response $response = null) + public function dispatch(Request $request, ?Response $response = null) { if (! $request instanceof HttpRequest) { throw new InvalidArgumentException('Expected an HTTP request'); diff --git a/src/Controller/LazyControllerAbstractFactory.php b/src/Controller/LazyControllerAbstractFactory.php index 55c8a8fa..2f45b1e0 100644 --- a/src/Controller/LazyControllerAbstractFactory.php +++ b/src/Controller/LazyControllerAbstractFactory.php @@ -97,7 +97,7 @@ class LazyControllerAbstractFactory implements AbstractFactoryInterface * * @return DispatchableInterface */ - public function __invoke(ContainerInterface $container, $requestedName, array $options = null) + public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null) { $reflectionClass = new ReflectionClass($requestedName); diff --git a/src/Controller/MiddlewareController.php b/src/Controller/MiddlewareController.php index b450b85a..d4d4d5fd 100644 --- a/src/Controller/MiddlewareController.php +++ b/src/Controller/MiddlewareController.php @@ -30,8 +30,8 @@ final class MiddlewareController extends AbstractController { public function __construct( - private MiddlewarePipe $pipe, - private ResponseInterface $responsePrototype, + private readonly MiddlewarePipe $pipe, + private readonly ResponseInterface $responsePrototype, EventManagerInterface $eventManager, MvcEvent $event ) { diff --git a/src/Controller/Plugin/AcceptableViewModelSelector.php b/src/Controller/Plugin/AcceptableViewModelSelector.php index 2e972736..82392f8b 100644 --- a/src/Controller/Plugin/AcceptableViewModelSelector.php +++ b/src/Controller/Plugin/AcceptableViewModelSelector.php @@ -45,7 +45,7 @@ class AcceptableViewModelSelector extends AbstractPlugin * * @var string Default ViewModel */ - protected $defaultViewModelName = 'Laminas\View\Model\ViewModel'; + protected $defaultViewModelName = \Laminas\View\Model\ViewModel::class; /** * Detects an appropriate viewmodel for request. @@ -57,7 +57,7 @@ class AcceptableViewModelSelector extends AbstractPlugin * @return ModelInterface|null */ public function __invoke( - array $matchAgainst = null, + ?array $matchAgainst = null, $returnDefault = true, &$resultReference = null ) { @@ -74,7 +74,7 @@ public function __invoke( * @return ModelInterface|null */ public function getViewModel( - array $matchAgainst = null, + ?array $matchAgainst = null, $returnDefault = true, &$resultReference = null ) { @@ -100,7 +100,7 @@ public function getViewModel( * @return ModelInterface|null Returns null if $returnDefault = false and no match could be made */ public function getViewModelName( - array $matchAgainst = null, + ?array $matchAgainst = null, $returnDefault = true, &$resultReference = null ) { @@ -121,7 +121,7 @@ public function getViewModelName( * @param array $matchAgainst (optional) The Array to match against * @return AbstractFieldValuePart|null The object that was matched */ - public function match(array $matchAgainst = null) + public function match(?array $matchAgainst = null) { $request = $this->getRequest(); $headers = $request->getHeaders(); @@ -176,7 +176,7 @@ public function getDefaultViewModelName() * @param array $matchAgainst (optional) The Array to match against * @return AcceptableViewModelSelector provides fluent interface */ - public function setDefaultMatchAgainst(array $matchAgainst = null) + public function setDefaultMatchAgainst(?array $matchAgainst = null) { $this->defaultMatchAgainst = $matchAgainst; return $this; diff --git a/src/Controller/Plugin/Forward.php b/src/Controller/Plugin/Forward.php index 8e352c11..b6b91f66 100644 --- a/src/Controller/Plugin/Forward.php +++ b/src/Controller/Plugin/Forward.php @@ -70,9 +70,9 @@ public function getListenersToDetach() // from getting attached to the ViewModel twice when a calling action // returns the output generated by a forwarded action. $this->listenersToDetach = [[ - 'id' => 'Laminas\Stdlib\DispatchableInterface', + 'id' => \Laminas\Stdlib\DispatchableInterface::class, 'event' => MvcEvent::EVENT_DISPATCH, - 'class' => 'Laminas\Mvc\View\Http\InjectViewModelListener', + 'class' => \Laminas\Mvc\View\Http\InjectViewModelListener::class, ]]; } return $this->listenersToDetach; @@ -101,7 +101,7 @@ public function setListenersToDetach($listeners) * @throws Exception\DomainException if composed controller does not define InjectApplicationEventInterface * or Locator aware; or if the discovered controller is not dispatchable */ - public function dispatch($name, array $params = null) + public function dispatch($name, ?array $params = null) { $event = clone($this->getEvent()); @@ -231,7 +231,7 @@ protected function getEvent() if (! $controller instanceof InjectApplicationEventInterface) { throw new DomainException(sprintf( 'Forward plugin requires a controller that implements InjectApplicationEventInterface; received %s', - (is_object($controller) ? $controller::class : var_export($controller, 1)) + (get_debug_type($controller)) )); } diff --git a/src/Controller/Plugin/Service/ForwardFactory.php b/src/Controller/Plugin/Service/ForwardFactory.php index 6abfb0e0..b2431c02 100644 --- a/src/Controller/Plugin/Service/ForwardFactory.php +++ b/src/Controller/Plugin/Service/ForwardFactory.php @@ -15,7 +15,7 @@ class ForwardFactory implements FactoryInterface * @return Forward * @throws ServiceNotCreatedException if Controllermanager service is not found in application service locator */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { if (! $container->has('ControllerManager')) { throw new ServiceNotCreatedException(sprintf( diff --git a/src/Controller/PluginManager.php b/src/Controller/PluginManager.php index 8cbe652b..fccab54a 100644 --- a/src/Controller/PluginManager.php +++ b/src/Controller/PluginManager.php @@ -113,7 +113,7 @@ class PluginManager extends AbstractPluginManager * @param null|array $options Options to use when creating the instance. * @return DispatchableInterface */ - public function get($name, array $options = null) + public function get($name, ?array $options = null) { $plugin = parent::get($name, $options); $this->injectController($plugin); diff --git a/src/DispatchListener.php b/src/DispatchListener.php index 0bf471df..e4c74b1c 100644 --- a/src/DispatchListener.php +++ b/src/DispatchListener.php @@ -37,7 +37,7 @@ */ class DispatchListener extends AbstractListenerAggregate { - public function __construct(private ControllerManager $controllerManager) + public function __construct(private readonly ControllerManager $controllerManager) { } diff --git a/src/MiddlewareListener.php b/src/MiddlewareListener.php index cfa4408e..77368112 100644 --- a/src/MiddlewareListener.php +++ b/src/MiddlewareListener.php @@ -165,7 +165,7 @@ protected function marshalInvalidMiddleware( $middlewareName, MvcEvent $event, Application $application, - Exception $exception = null + ?Exception $exception = null ) { $event->setName(MvcEvent::EVENT_DISPATCH_ERROR); $event->setError($type); diff --git a/src/ResponseSender/AbstractResponseSender.php b/src/ResponseSender/AbstractResponseSender.php index c98724a4..ea27981e 100644 --- a/src/ResponseSender/AbstractResponseSender.php +++ b/src/ResponseSender/AbstractResponseSender.php @@ -19,16 +19,20 @@ public function sendHeaders(SendResponseEvent $event) $response = $event->getResponse(); - foreach ($response->getHeaders() as $header) { - if ($header instanceof MultipleHeaderInterface) { - header($header->toString(), false); - continue; + $headers = $response->getHeaders(); + + if (is_iterable($headers)) { + foreach ($response->getHeaders() as $header) { + if ($header instanceof MultipleHeaderInterface) { + header($header->toString(), false); + continue; + } + header($header->toString()); } - header($header->toString()); } $status = $response->renderStatusLine(); - header($status); + header((string) $status); $event->setHeadersSent(); return $this; diff --git a/src/SendResponseListener.php b/src/SendResponseListener.php index 644fe745..d0c8c461 100644 --- a/src/SendResponseListener.php +++ b/src/SendResponseListener.php @@ -35,7 +35,7 @@ public function setEventManager(EventManagerInterface $eventManager) { $eventManager->setIdentifiers([ self::class, - $this::class, + static::class, ]); $this->eventManager = $eventManager; $this->attachDefaultListeners(); diff --git a/src/Service/AbstractPluginManagerFactory.php b/src/Service/AbstractPluginManagerFactory.php index 60182fa0..1c2ed0b0 100644 --- a/src/Service/AbstractPluginManagerFactory.php +++ b/src/Service/AbstractPluginManagerFactory.php @@ -21,7 +21,7 @@ abstract class AbstractPluginManagerFactory implements FactoryInterface * @param null|array $options * @return AbstractPluginManager */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $options = $options ?: []; $pluginManagerClass = static::PLUGIN_MANAGER_CLASS; diff --git a/src/Service/ApplicationFactory.php b/src/Service/ApplicationFactory.php index 3436f225..25d4cd5c 100644 --- a/src/Service/ApplicationFactory.php +++ b/src/Service/ApplicationFactory.php @@ -19,7 +19,7 @@ class ApplicationFactory implements FactoryInterface * @param null|array $options * @return Application */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new Application( $container, diff --git a/src/Service/ConfigFactory.php b/src/Service/ConfigFactory.php index 78ae2b9b..7b5f0849 100644 --- a/src/Service/ConfigFactory.php +++ b/src/Service/ConfigFactory.php @@ -22,7 +22,7 @@ class ConfigFactory implements FactoryInterface * @param null|array $options * @return array|Traversable */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $moduleManager = $container->get('ModuleManager'); $moduleManager->loadModules(); diff --git a/src/Service/ControllerManagerFactory.php b/src/Service/ControllerManagerFactory.php index 14ce12a9..c538d92d 100644 --- a/src/Service/ControllerManagerFactory.php +++ b/src/Service/ControllerManagerFactory.php @@ -23,7 +23,7 @@ class ControllerManagerFactory implements FactoryInterface * @param null|array $options * @return ControllerManager */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { if ($options) { return new ControllerManager($container, $options); diff --git a/src/Service/DispatchListenerFactory.php b/src/Service/DispatchListenerFactory.php index 62b0cb37..c7f89048 100644 --- a/src/Service/DispatchListenerFactory.php +++ b/src/Service/DispatchListenerFactory.php @@ -16,7 +16,7 @@ class DispatchListenerFactory implements FactoryInterface * @param null|array $options * @return DispatchListener */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new DispatchListener($container->get('ControllerManager')); } diff --git a/src/Service/EventManagerFactory.php b/src/Service/EventManagerFactory.php index d5818e0c..213e2c05 100644 --- a/src/Service/EventManagerFactory.php +++ b/src/Service/EventManagerFactory.php @@ -19,7 +19,7 @@ class EventManagerFactory implements FactoryInterface * @param null|array $options * @return EventManager */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $shared = $container->has('SharedEventManager') ? $container->get('SharedEventManager') : null; diff --git a/src/Service/HttpDefaultRenderingStrategyFactory.php b/src/Service/HttpDefaultRenderingStrategyFactory.php index ba310e5d..ac2acbea 100644 --- a/src/Service/HttpDefaultRenderingStrategyFactory.php +++ b/src/Service/HttpDefaultRenderingStrategyFactory.php @@ -17,7 +17,7 @@ class HttpDefaultRenderingStrategyFactory implements FactoryInterface * @param null|array $options * @return DefaultRenderingStrategy */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $strategy = new DefaultRenderingStrategy($container->get(View::class)); $config = $this->getConfig($container); diff --git a/src/Service/HttpExceptionStrategyFactory.php b/src/Service/HttpExceptionStrategyFactory.php index b4c55dea..4ff562b9 100644 --- a/src/Service/HttpExceptionStrategyFactory.php +++ b/src/Service/HttpExceptionStrategyFactory.php @@ -16,7 +16,7 @@ class HttpExceptionStrategyFactory implements FactoryInterface * @param null|array $options * @return ExceptionStrategy */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $strategy = new ExceptionStrategy(); $config = $this->getConfig($container); diff --git a/src/Service/HttpMethodListenerFactory.php b/src/Service/HttpMethodListenerFactory.php index 6152ebc3..bd3f7903 100644 --- a/src/Service/HttpMethodListenerFactory.php +++ b/src/Service/HttpMethodListenerFactory.php @@ -12,7 +12,7 @@ class HttpMethodListenerFactory implements FactoryInterface * {@inheritdoc} * @return HttpMethodListener */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $config = $container->get('config'); diff --git a/src/Service/HttpRouteNotFoundStrategyFactory.php b/src/Service/HttpRouteNotFoundStrategyFactory.php index 1e33511c..71fc1ca3 100644 --- a/src/Service/HttpRouteNotFoundStrategyFactory.php +++ b/src/Service/HttpRouteNotFoundStrategyFactory.php @@ -16,7 +16,7 @@ class HttpRouteNotFoundStrategyFactory implements FactoryInterface * @param null|array $options * @return RouteNotFoundStrategy */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $strategy = new RouteNotFoundStrategy(); $config = $this->getConfig($container); diff --git a/src/Service/HttpViewManagerFactory.php b/src/Service/HttpViewManagerFactory.php index cda573d0..eb7cf67e 100644 --- a/src/Service/HttpViewManagerFactory.php +++ b/src/Service/HttpViewManagerFactory.php @@ -16,7 +16,7 @@ class HttpViewManagerFactory implements FactoryInterface * @param null|array $options * @return HttpViewManager */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new HttpViewManager(); } diff --git a/src/Service/InjectTemplateListenerFactory.php b/src/Service/InjectTemplateListenerFactory.php index b7d27d78..9b29844a 100644 --- a/src/Service/InjectTemplateListenerFactory.php +++ b/src/Service/InjectTemplateListenerFactory.php @@ -15,7 +15,7 @@ class InjectTemplateListenerFactory implements FactoryInterface * * @return InjectTemplateListener */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $listener = new InjectTemplateListener(); $config = $container->get('config'); diff --git a/src/Service/ModuleManagerFactory.php b/src/Service/ModuleManagerFactory.php index 1fbde489..a78263a9 100644 --- a/src/Service/ModuleManagerFactory.php +++ b/src/Service/ModuleManagerFactory.php @@ -27,7 +27,7 @@ class ModuleManagerFactory implements FactoryInterface * @param null|array $options * @return ModuleManager */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $configuration = $container->get('ApplicationConfig'); $listenerOptions = new ListenerOptions($configuration['module_listener_options']); @@ -37,32 +37,32 @@ public function __invoke(ContainerInterface $container, $name, array $options = $serviceListener->addServiceManager( $container, 'service_manager', - 'Laminas\ModuleManager\Feature\ServiceProviderInterface', + \Laminas\ModuleManager\Feature\ServiceProviderInterface::class, 'getServiceConfig' ); $serviceListener->addServiceManager( 'ControllerManager', 'controllers', - 'Laminas\ModuleManager\Feature\ControllerProviderInterface', + \Laminas\ModuleManager\Feature\ControllerProviderInterface::class, 'getControllerConfig' ); $serviceListener->addServiceManager( 'ControllerPluginManager', 'controller_plugins', - 'Laminas\ModuleManager\Feature\ControllerPluginProviderInterface', + \Laminas\ModuleManager\Feature\ControllerPluginProviderInterface::class, 'getControllerPluginConfig' ); $serviceListener->addServiceManager( 'ViewHelperManager', 'view_helpers', - 'Laminas\ModuleManager\Feature\ViewHelperProviderInterface', + \Laminas\ModuleManager\Feature\ViewHelperProviderInterface::class, 'getViewHelperConfig' ); $serviceListener->addServiceManager( 'RoutePluginManager', 'route_manager', - 'Laminas\ModuleManager\Feature\RouteProviderInterface', + \Laminas\ModuleManager\Feature\RouteProviderInterface::class, 'getRouteConfig' ); diff --git a/src/Service/RequestFactory.php b/src/Service/RequestFactory.php index 77d2e0ee..1a46026b 100644 --- a/src/Service/RequestFactory.php +++ b/src/Service/RequestFactory.php @@ -16,7 +16,7 @@ class RequestFactory implements FactoryInterface * @param null|array $options * @return HttpRequest */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new HttpRequest(); } diff --git a/src/Service/ResponseFactory.php b/src/Service/ResponseFactory.php index bd870714..714fbac9 100644 --- a/src/Service/ResponseFactory.php +++ b/src/Service/ResponseFactory.php @@ -16,7 +16,7 @@ class ResponseFactory implements FactoryInterface * @param null|array $options * @return HttpResponse */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new HttpResponse(); } diff --git a/src/Service/ServiceListenerFactory.php b/src/Service/ServiceListenerFactory.php index bb95f09e..e527d395 100644 --- a/src/Service/ServiceListenerFactory.php +++ b/src/Service/ServiceListenerFactory.php @@ -36,58 +36,59 @@ class ServiceListenerFactory implements FactoryInterface 'configuration' => 'config', 'Configuration' => 'config', 'HttpDefaultRenderingStrategy' => DefaultRenderingStrategy::class, - 'MiddlewareListener' => 'Laminas\Mvc\MiddlewareListener', + 'MiddlewareListener' => \Laminas\Mvc\MiddlewareListener::class, 'request' => 'Request', 'response' => 'Response', - 'RouteListener' => 'Laminas\Mvc\RouteListener', - 'SendResponseListener' => 'Laminas\Mvc\SendResponseListener', - 'View' => 'Laminas\View\View', - 'ViewFeedRenderer' => 'Laminas\View\Renderer\FeedRenderer', - 'ViewJsonRenderer' => 'Laminas\View\Renderer\JsonRenderer', - 'ViewPhpRendererStrategy' => 'Laminas\View\Strategy\PhpRendererStrategy', - 'ViewPhpRenderer' => 'Laminas\View\Renderer\PhpRenderer', - 'ViewRenderer' => 'Laminas\View\Renderer\PhpRenderer', - 'Laminas\Mvc\Controller\PluginManager' => 'ControllerPluginManager', - 'Laminas\Mvc\View\Http\InjectTemplateListener' => 'InjectTemplateListener', - 'Laminas\View\Renderer\RendererInterface' => 'Laminas\View\Renderer\PhpRenderer', - 'Laminas\View\Resolver\TemplateMapResolver' => 'ViewTemplateMapResolver', - 'Laminas\View\Resolver\TemplatePathStack' => 'ViewTemplatePathStack', - 'Laminas\View\Resolver\AggregateResolver' => 'ViewResolver', - 'Laminas\View\Resolver\ResolverInterface' => 'ViewResolver', + 'RouteListener' => \Laminas\Mvc\RouteListener::class, + 'SendResponseListener' => \Laminas\Mvc\SendResponseListener::class, + 'View' => \Laminas\View\View::class, + 'ViewFeedRenderer' => \Laminas\View\Renderer\FeedRenderer::class, + 'ViewJsonRenderer' => \Laminas\View\Renderer\JsonRenderer::class, + 'ViewPhpRendererStrategy' => \Laminas\View\Strategy\PhpRendererStrategy::class, + 'ViewPhpRenderer' => \Laminas\View\Renderer\PhpRenderer::class, + 'ViewRenderer' => \Laminas\View\Renderer\PhpRenderer::class, + \Laminas\Mvc\Controller\PluginManager::class => 'ControllerPluginManager', + \Laminas\Mvc\View\Http\InjectTemplateListener::class => 'InjectTemplateListener', + \Laminas\View\Renderer\RendererInterface::class => \Laminas\View\Renderer\PhpRenderer::class, + \Laminas\View\Resolver\TemplateMapResolver::class => 'ViewTemplateMapResolver', + \Laminas\View\Resolver\TemplatePathStack::class => 'ViewTemplatePathStack', + \Laminas\View\Resolver\AggregateResolver::class => 'ViewResolver', + \Laminas\View\Resolver\ResolverInterface::class => 'ViewResolver', ControllerManager::class => 'ControllerManager', ], 'invokables' => [], 'factories' => [ 'Application' => ApplicationFactory::class, - 'config' => 'Laminas\Mvc\Service\ConfigFactory', - 'ControllerManager' => 'Laminas\Mvc\Service\ControllerManagerFactory', - 'ControllerPluginManager' => 'Laminas\Mvc\Service\ControllerPluginManagerFactory', - 'DispatchListener' => 'Laminas\Mvc\Service\DispatchListenerFactory', + 'config' => \Laminas\Mvc\Service\ConfigFactory::class, + 'ControllerManager' => \Laminas\Mvc\Service\ControllerManagerFactory::class, + 'ControllerPluginManager' => \Laminas\Mvc\Service\ControllerPluginManagerFactory::class, + 'DispatchListener' => \Laminas\Mvc\Service\DispatchListenerFactory::class, 'HttpExceptionStrategy' => HttpExceptionStrategyFactory::class, - 'HttpMethodListener' => 'Laminas\Mvc\Service\HttpMethodListenerFactory', + 'HttpMethodListener' => \Laminas\Mvc\Service\HttpMethodListenerFactory::class, 'HttpRouteNotFoundStrategy' => HttpRouteNotFoundStrategyFactory::class, - 'HttpViewManager' => 'Laminas\Mvc\Service\HttpViewManagerFactory', - 'InjectTemplateListener' => 'Laminas\Mvc\Service\InjectTemplateListenerFactory', - 'PaginatorPluginManager' => 'Laminas\Mvc\Service\PaginatorPluginManagerFactory', - 'Request' => 'Laminas\Mvc\Service\RequestFactory', - 'Response' => 'Laminas\Mvc\Service\ResponseFactory', - 'ViewHelperManager' => 'Laminas\Mvc\Service\ViewHelperManagerFactory', + 'HttpViewManager' => \Laminas\Mvc\Service\HttpViewManagerFactory::class, + 'InjectTemplateListener' => \Laminas\Mvc\Service\InjectTemplateListenerFactory::class, + 'PaginatorPluginManager' => \Laminas\Mvc\Service\PaginatorPluginManagerFactory::class, + 'Request' => \Laminas\Mvc\Service\RequestFactory::class, + 'Response' => \Laminas\Mvc\Service\ResponseFactory::class, + 'ViewHelperManager' => \Laminas\Mvc\Service\ViewHelperManagerFactory::class, DefaultRenderingStrategy::class => HttpDefaultRenderingStrategyFactory::class, - 'ViewFeedStrategy' => 'Laminas\Mvc\Service\ViewFeedStrategyFactory', - 'ViewJsonStrategy' => 'Laminas\Mvc\Service\ViewJsonStrategyFactory', - 'ViewManager' => 'Laminas\Mvc\Service\ViewManagerFactory', - 'ViewResolver' => 'Laminas\Mvc\Service\ViewResolverFactory', - 'ViewTemplateMapResolver' => 'Laminas\Mvc\Service\ViewTemplateMapResolverFactory', - 'ViewTemplatePathStack' => 'Laminas\Mvc\Service\ViewTemplatePathStackFactory', - 'ViewPrefixPathStackResolver' => 'Laminas\Mvc\Service\ViewPrefixPathStackResolverFactory', - 'Laminas\Mvc\MiddlewareListener' => InvokableFactory::class, - 'Laminas\Mvc\RouteListener' => InvokableFactory::class, - 'Laminas\Mvc\SendResponseListener' => SendResponseListenerFactory::class, - 'Laminas\View\Renderer\FeedRenderer' => InvokableFactory::class, - 'Laminas\View\Renderer\JsonRenderer' => InvokableFactory::class, - 'Laminas\View\Renderer\PhpRenderer' => ViewPhpRendererFactory::class, - 'Laminas\View\Strategy\PhpRendererStrategy' => ViewPhpRendererStrategyFactory::class, - 'Laminas\View\View' => ViewFactory::class, + 'ViewFeedStrategy' => \Laminas\Mvc\Service\ViewFeedStrategyFactory::class, + 'ViewJsonStrategy' => \Laminas\Mvc\Service\ViewJsonStrategyFactory::class, + 'ViewManager' => \Laminas\Mvc\Service\ViewManagerFactory::class, + 'ViewResolver' => \Laminas\Mvc\Service\ViewResolverFactory::class, + 'ViewTemplateMapResolver' => \Laminas\Mvc\Service\ViewTemplateMapResolverFactory::class, + 'ViewTemplatePathStack' => \Laminas\Mvc\Service\ViewTemplatePathStackFactory::class, + 'ViewPrefixPathStackResolver' + => \Laminas\Mvc\Service\ViewPrefixPathStackResolverFactory::class, + \Laminas\Mvc\MiddlewareListener::class => InvokableFactory::class, + \Laminas\Mvc\RouteListener::class => InvokableFactory::class, + \Laminas\Mvc\SendResponseListener::class => SendResponseListenerFactory::class, + \Laminas\View\Renderer\FeedRenderer::class => InvokableFactory::class, + \Laminas\View\Renderer\JsonRenderer::class => InvokableFactory::class, + \Laminas\View\Renderer\PhpRenderer::class => ViewPhpRendererFactory::class, + \Laminas\View\Strategy\PhpRendererStrategy::class => ViewPhpRendererStrategyFactory::class, + \Laminas\View\View::class => ViewFactory::class, ], ]; @@ -116,7 +117,7 @@ class ServiceListenerFactory implements FactoryInterface * @throws ServiceNotCreatedException for invalid ServiceListener service * @throws ServiceNotCreatedException For invalid configurations. */ - public function __invoke(ContainerInterface $container, $requestedName, array $options = null) + public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null) { $configuration = $container->get('ApplicationConfig'); diff --git a/src/Service/ViewFactory.php b/src/Service/ViewFactory.php index 934eacd1..aa0c25e3 100644 --- a/src/Service/ViewFactory.php +++ b/src/Service/ViewFactory.php @@ -15,7 +15,7 @@ class ViewFactory implements FactoryInterface * @param null|array $options * @return View */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $view = new View(); $events = $container->get('EventManager'); diff --git a/src/Service/ViewFeedStrategyFactory.php b/src/Service/ViewFeedStrategyFactory.php index 24333ac7..0e985ce7 100644 --- a/src/Service/ViewFeedStrategyFactory.php +++ b/src/Service/ViewFeedStrategyFactory.php @@ -21,7 +21,7 @@ class ViewFeedStrategyFactory implements FactoryInterface * @param null|array $options * @return FeedStrategy */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new FeedStrategy($container->get('ViewFeedRenderer')); } diff --git a/src/Service/ViewHelperManagerFactory.php b/src/Service/ViewHelperManagerFactory.php index 17f5148c..83b4acf6 100644 --- a/src/Service/ViewHelperManagerFactory.php +++ b/src/Service/ViewHelperManagerFactory.php @@ -34,7 +34,7 @@ class ViewHelperManagerFactory extends AbstractPluginManagerFactory * @return HelperPluginManager * @throws ServiceNotCreatedException */ - public function __invoke(ContainerInterface $container, $requestedName, array $options = null) + public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null) { $options = $options ?: []; $options['factories'] ??= []; diff --git a/src/Service/ViewJsonStrategyFactory.php b/src/Service/ViewJsonStrategyFactory.php index 68920929..c8eb3d65 100644 --- a/src/Service/ViewJsonStrategyFactory.php +++ b/src/Service/ViewJsonStrategyFactory.php @@ -21,7 +21,7 @@ class ViewJsonStrategyFactory implements FactoryInterface * @param null|array $options * @return JsonStrategy */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $jsonRenderer = $container->get('ViewJsonRenderer'); $jsonStrategy = new JsonStrategy($jsonRenderer); diff --git a/src/Service/ViewManagerFactory.php b/src/Service/ViewManagerFactory.php index aed5ba67..6747cbb8 100644 --- a/src/Service/ViewManagerFactory.php +++ b/src/Service/ViewManagerFactory.php @@ -16,7 +16,7 @@ class ViewManagerFactory implements FactoryInterface * @param null|array $options * @return HttpViewManager */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return $container->get('HttpViewManager'); } diff --git a/src/Service/ViewPhpRendererFactory.php b/src/Service/ViewPhpRendererFactory.php index 2472f07d..5686c124 100644 --- a/src/Service/ViewPhpRendererFactory.php +++ b/src/Service/ViewPhpRendererFactory.php @@ -14,7 +14,7 @@ class ViewPhpRendererFactory implements FactoryInterface * @param null|array $options * @return PhpRenderer */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $renderer = new PhpRenderer(); $renderer->setHelperPluginManager($container->get('ViewHelperManager')); diff --git a/src/Service/ViewPhpRendererStrategyFactory.php b/src/Service/ViewPhpRendererStrategyFactory.php index da178645..ce83c472 100644 --- a/src/Service/ViewPhpRendererStrategyFactory.php +++ b/src/Service/ViewPhpRendererStrategyFactory.php @@ -15,7 +15,7 @@ class ViewPhpRendererStrategyFactory implements FactoryInterface * @param null|array $options * @return PhpRendererStrategy */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new PhpRendererStrategy($container->get(PhpRenderer::class)); } diff --git a/src/Service/ViewPrefixPathStackResolverFactory.php b/src/Service/ViewPrefixPathStackResolverFactory.php index 9d473adc..baa3c82d 100644 --- a/src/Service/ViewPrefixPathStackResolverFactory.php +++ b/src/Service/ViewPrefixPathStackResolverFactory.php @@ -19,7 +19,7 @@ class ViewPrefixPathStackResolverFactory implements FactoryInterface * @param null|array $options * @return PrefixPathStackResolver */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $config = $container->get('config'); $prefixes = []; diff --git a/src/Service/ViewResolverFactory.php b/src/Service/ViewResolverFactory.php index 63bb8105..9f81c68e 100644 --- a/src/Service/ViewResolverFactory.php +++ b/src/Service/ViewResolverFactory.php @@ -20,7 +20,7 @@ class ViewResolverFactory implements FactoryInterface * @param null|array $options * @return ViewResolver\AggregateResolver */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $resolver = new ViewResolver\AggregateResolver(); diff --git a/src/Service/ViewTemplateMapResolverFactory.php b/src/Service/ViewTemplateMapResolverFactory.php index aa69bb0d..28f357f1 100644 --- a/src/Service/ViewTemplateMapResolverFactory.php +++ b/src/Service/ViewTemplateMapResolverFactory.php @@ -19,7 +19,7 @@ class ViewTemplateMapResolverFactory implements FactoryInterface * @param null|array $options * @return ViewResolver\TemplateMapResolver */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $config = $container->get('config'); $map = []; diff --git a/src/Service/ViewTemplatePathStackFactory.php b/src/Service/ViewTemplatePathStackFactory.php index fd364ba8..3c63e75a 100644 --- a/src/Service/ViewTemplatePathStackFactory.php +++ b/src/Service/ViewTemplatePathStackFactory.php @@ -20,7 +20,7 @@ class ViewTemplatePathStackFactory implements FactoryInterface * @param null|array $options * @return ViewResolver\TemplatePathStack */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $config = $container->get('config'); diff --git a/src/View/Http/InjectTemplateListener.php b/src/View/Http/InjectTemplateListener.php index d51f7577..01a6a7ce 100644 --- a/src/View/Http/InjectTemplateListener.php +++ b/src/View/Http/InjectTemplateListener.php @@ -167,7 +167,7 @@ protected function deriveControllerClass($controller) } if ((10 < strlen($controller)) - && ('Controller' == substr($controller, -10)) + && (str_ends_with($controller, 'Controller')) ) { $controller = substr($controller, 0, -10); } diff --git a/src/View/Http/ViewManager.php b/src/View/Http/ViewManager.php index 100b9e3f..9779a798 100644 --- a/src/View/Http/ViewManager.php +++ b/src/View/Http/ViewManager.php @@ -100,7 +100,7 @@ public function onBootstrap($event) $this->injectViewModelIntoPlugin(); - $injectTemplateListener = $services->get('Laminas\Mvc\View\Http\InjectTemplateListener'); + $injectTemplateListener = $services->get(\Laminas\Mvc\View\Http\InjectTemplateListener::class); $createViewModelListener = new CreateViewModelListener(); $injectViewModelListener = new InjectViewModelListener(); @@ -114,31 +114,31 @@ public function onBootstrap($event) $mvcRenderingStrategy->attach($events); $sharedEvents->attach( - 'Laminas\Stdlib\DispatchableInterface', + \Laminas\Stdlib\DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$createViewModelListener, 'createViewModelFromArray'], -80 ); $sharedEvents->attach( - 'Laminas\Stdlib\DispatchableInterface', + \Laminas\Stdlib\DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$routeNotFoundStrategy, 'prepareNotFoundViewModel'], -90 ); $sharedEvents->attach( - 'Laminas\Stdlib\DispatchableInterface', + \Laminas\Stdlib\DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$createViewModelListener, 'createViewModelFromNull'], -80 ); $sharedEvents->attach( - 'Laminas\Stdlib\DispatchableInterface', + \Laminas\Stdlib\DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$injectTemplateListener, 'injectTemplate'], -90 ); $sharedEvents->attach( - 'Laminas\Stdlib\DispatchableInterface', + \Laminas\Stdlib\DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$injectViewModelListener, 'injectViewModel'], -100 diff --git a/test/Application/InitializationIntegrationTest.php b/test/Application/InitializationIntegrationTest.php index fd9cc17d..8cfe84a6 100644 --- a/test/Application/InitializationIntegrationTest.php +++ b/test/Application/InitializationIntegrationTest.php @@ -33,8 +33,8 @@ public function testDefaultInitializationWorkflow() $content = ob_get_clean(); $response = $application->getResponse(); - $this->assertStringContainsString('Application\\Controller\\PathController', $response->getContent()); - $this->assertStringContainsString('Application\\Controller\\PathController', $content); + $this->assertStringContainsString(\Application\Controller\PathController::class, $response->getContent()); + $this->assertStringContainsString(\Application\Controller\PathController::class, $content); $this->assertStringContainsString(MvcEvent::EVENT_DISPATCH, $response->toString()); } } diff --git a/test/Application/InvalidControllerTypeShouldTriggerDispatchErrorTest.php b/test/Application/InvalidControllerTypeShouldTriggerDispatchErrorTest.php index aa8f82ac..c64ecfcd 100644 --- a/test/Application/InvalidControllerTypeShouldTriggerDispatchErrorTest.php +++ b/test/Application/InvalidControllerTypeShouldTriggerDispatchErrorTest.php @@ -6,7 +6,7 @@ use Laminas\Mvc\MvcEvent; use PHPUnit\Framework\TestCase; -class InvalidControllerTypeShouldTrigerDispatchErrorTest extends TestCase +class InvalidControllerTypeShouldTriggerDispatchErrorTest extends TestCase { use InvalidControllerTypeTrait; diff --git a/test/Application/TestAsset/modules/Application/src/Application/Controller/PathController.php b/test/Application/TestAsset/modules/Application/src/Application/Controller/PathController.php index aaac9c2f..c8ad2e04 100644 --- a/test/Application/TestAsset/modules/Application/src/Application/Controller/PathController.php +++ b/test/Application/TestAsset/modules/Application/src/Application/Controller/PathController.php @@ -9,7 +9,7 @@ class PathController implements DispatchableInterface { - public function dispatch(Request $request, Response $response = null) + public function dispatch(Request $request, ?Response $response = null) { if (! $response) { $response = new HttpResponse(); diff --git a/test/ApplicationTest.php b/test/ApplicationTest.php index 21427ad9..4faeb294 100644 --- a/test/ApplicationTest.php +++ b/test/ApplicationTest.php @@ -193,7 +193,7 @@ public function testBootstrapRegistersListeners($listenerServiceName, $event, $m $this->assertContains([$listenerService, $method], $listeners); } - public function bootstrapRegistersListenersProvider() + public static function bootstrapRegistersListenersProvider() { // @codingStandardsIgnoreStart // [ Service Name, Event, Method, isCustom ] @@ -560,13 +560,13 @@ public function testFailedRoutingShouldBePreventable() $response = $this->createMock(ResponseInterface::class); $finishMock = $this->getMockBuilder(stdClass::class) - ->setMethods(['__invoke']) + ->addMethods(['__invoke']) ->getMock(); $routeMock = $this->getMockBuilder(stdClass::class) - ->setMethods(['__invoke']) + ->addMethods(['__invoke']) ->getMock(); $dispatchMock = $this->getMockBuilder(stdClass::class) - ->setMethods(['__invoke']) + ->addMethods(['__invoke']) ->getMock(); $routeMock->expects($this->once())->method('__invoke')->will( @@ -596,16 +596,16 @@ public function testCanRecoverFromApplicationError() $response = $this->createMock(ResponseInterface::class); $errorMock = $this->getMockBuilder(stdClass::class) - ->setMethods(['__invoke']) + ->addMethods(['__invoke']) ->getMock(); $finishMock = $this->getMockBuilder(stdClass::class) - ->setMethods(['__invoke']) + ->addMethods(['__invoke']) ->getMock(); $routeMock = $this->getMockBuilder(stdClass::class) - ->setMethods(['__invoke']) + ->addMethods(['__invoke']) ->getMock(); $dispatchMock = $this->getMockBuilder(stdClass::class) - ->setMethods(['__invoke']) + ->addMethods(['__invoke']) ->getMock(); $errorMock->expects($this->once())->method('__invoke')->will( @@ -639,7 +639,7 @@ public function testCanRecoverFromApplicationError() $this->assertSame($response, $this->application->getMvcEvent()->getResponse()); } - public function eventPropagation() + public static function eventPropagation() { return [ 'route' => [[MvcEvent::EVENT_ROUTE]], diff --git a/test/Controller/LazyControllerAbstractFactoryTest.php b/test/Controller/LazyControllerAbstractFactoryTest.php index 94aac3ec..d1b31342 100644 --- a/test/Controller/LazyControllerAbstractFactoryTest.php +++ b/test/Controller/LazyControllerAbstractFactoryTest.php @@ -22,16 +22,14 @@ class LazyControllerAbstractFactoryTest extends TestCase { - use ProphecyTrait; - - private ContainerInterface|ObjectProphecy $container; + private ContainerInterface $container; public function setUp(): void { - $this->container = $this->prophesize(ContainerInterface::class); + $this->container = $this->createMock(ContainerInterface::class); } - public function nonClassRequestedNames() + public static function nonClassRequestedNames() { return [ 'non-class-string' => ['non-class-string'], @@ -44,33 +42,35 @@ public function nonClassRequestedNames() public function testCanCreateReturnsFalseForNonClassRequestedNames($requestedName) { $factory = new LazyControllerAbstractFactory(); - $this->assertFalse($factory->canCreate($this->container->reveal(), $requestedName)); + $this->assertFalse($factory->canCreate($this->container, $requestedName)); } public function testCanCreateReturnsFalseForClassesThatDoNotImplementDispatchableInterface() { $factory = new LazyControllerAbstractFactory(); - $this->assertFalse($factory->canCreate($this->container->reveal(), self::class)); + $this->assertFalse($factory->canCreate($this->container, self::class)); } public function testFactoryInstantiatesClassDirectlyIfItHasNoConstructor() { $factory = new LazyControllerAbstractFactory(); - $controller = $factory($this->container->reveal(), SampleController::class); + $controller = $factory($this->container, SampleController::class); $this->assertInstanceOf(SampleController::class, $controller); } public function testFactoryInstantiatesClassDirectlyIfConstructorHasNoArguments() { $factory = new LazyControllerAbstractFactory(); - $controller = $factory($this->container->reveal(), ControllerWithEmptyConstructor::class); + $controller = $factory($this->container, ControllerWithEmptyConstructor::class); $this->assertInstanceOf(ControllerWithEmptyConstructor::class, $controller); } public function testFactoryRaisesExceptionWhenUnableToResolveATypeHintedService() { - $this->container->has(SampleInterface::class)->willReturn(false); - $this->container->has(\ZendTest\Mvc\Controller\TestAsset\SampleInterface::class)->willReturn(false); + $this->container->method('has')->willReturnMap([ + [SampleInterface::class, false], + [\ZendTest\Mvc\Controller\TestAsset\SampleInterface::class, false] + ]); $factory = new LazyControllerAbstractFactory(); $this->expectException(ServiceNotFoundException::class); $this->expectExceptionMessage( @@ -80,7 +80,7 @@ public function testFactoryRaisesExceptionWhenUnableToResolveATypeHintedService( SampleInterface::class ) ); - $factory($this->container->reveal(), ControllerWithTypeHintedConstructorParameter::class); + $factory($this->container, ControllerWithTypeHintedConstructorParameter::class); } /** @@ -88,7 +88,7 @@ public function testFactoryRaisesExceptionWhenUnableToResolveATypeHintedService( */ public function testFactoryRaisesExceptionWhenResolvingUnionTypeHintedService(): void { - $this->container->has(SampleInterface::class)->willReturn(false); + $this->container->method('has')->willReturn(false); $factory = new LazyControllerAbstractFactory(); $this->expectException(DomainException::class); $this->expectExceptionMessage( @@ -97,13 +97,13 @@ public function testFactoryRaisesExceptionWhenResolvingUnionTypeHintedService(): ControllerWithUnionTypeHintedConstructorParameter::class ) ); - $factory($this->container->reveal(), ControllerWithUnionTypeHintedConstructorParameter::class); + $factory($this->container, ControllerWithUnionTypeHintedConstructorParameter::class); } public function testFactoryPassesNullForScalarParameters() { $factory = new LazyControllerAbstractFactory(); - $controller = $factory($this->container->reveal(), ControllerWithScalarParameters::class); + $controller = $factory($this->container, ControllerWithScalarParameters::class); $this->assertInstanceOf(ControllerWithScalarParameters::class, $controller); $this->assertNull($controller->foo); $this->assertNull($controller->bar); @@ -112,24 +112,24 @@ public function testFactoryPassesNullForScalarParameters() public function testFactoryInjectsConfigServiceForConfigArgumentsTypeHintedAsArray() { $config = ['foo' => 'bar']; - $this->container->has('config')->willReturn(true); - $this->container->get('config')->willReturn($config); + $this->container->method('has')->with('config')->willReturn(true); + $this->container->method('get')->with('config')->willReturn($config); $factory = new LazyControllerAbstractFactory(); - $controller = $factory($this->container->reveal(), ControllerAcceptingConfigToConstructor::class); + $controller = $factory($this->container, ControllerAcceptingConfigToConstructor::class); $this->assertInstanceOf(ControllerAcceptingConfigToConstructor::class, $controller); $this->assertEquals($config, $controller->config); } public function testFactoryCanInjectKnownTypeHintedServices() { - $sample = $this->prophesize(SampleInterface::class)->reveal(); - $this->container->has(SampleInterface::class)->willReturn(true); - $this->container->get(SampleInterface::class)->willReturn($sample); + $sample = $this->createMock(SampleInterface::class); + $this->container->method('has')->with(SampleInterface::class)->willReturn(true); + $this->container->method('get')->with(SampleInterface::class)->willReturn($sample); $factory = new LazyControllerAbstractFactory(); $controller = $factory( - $this->container->reveal(), + $this->container, ControllerWithTypeHintedConstructorParameter::class ); $this->assertInstanceOf(ControllerWithTypeHintedConstructorParameter::class, $controller); @@ -138,13 +138,13 @@ public function testFactoryCanInjectKnownTypeHintedServices() public function testFactoryResolvesTypeHintsForServicesToWellKnownServiceNames() { - $validators = $this->prophesize(ValidatorPluginManager::class)->reveal(); - $this->container->has('ValidatorManager')->willReturn(true); - $this->container->get('ValidatorManager')->willReturn($validators); + $validators = $this->createMock(ValidatorPluginManager::class); + $this->container->method('has')->with('ValidatorManager')->willReturn(true); + $this->container->method('get')->with('ValidatorManager')->willReturn($validators); $factory = new LazyControllerAbstractFactory(); $controller = $factory( - $this->container->reveal(), + $this->container, ControllerAcceptingWellKnownServicesAsConstructorParameters::class ); $this->assertInstanceOf( @@ -156,26 +156,26 @@ public function testFactoryResolvesTypeHintsForServicesToWellKnownServiceNames() public function testFactoryCanSupplyAMixOfParameterTypes() { - $validators = $this->prophesize(ValidatorPluginManager::class)->reveal(); - $this->container->has('ValidatorManager')->willReturn(true); - $this->container->get('ValidatorManager')->willReturn($validators); - - $sample = $this->prophesize(SampleInterface::class)->reveal(); - $this->container->has(SampleInterface::class)->willReturn(true); - $this->container->get(SampleInterface::class)->willReturn($sample); - - $config = ['foo' => 'bar']; - $this->container->has('config')->willReturn(true); - $this->container->get('config')->willReturn($config); + $validators = $this->createMock(ValidatorPluginManager::class); + $this->container->method('has')->willReturnMap([ + ['ValidatorManager', true], + [SampleInterface::class, true], + ['config', true] + ]); + $this->container->method('get')->willReturnMap([ + ['ValidatorManager', $validators], + [SampleInterface::class, $this->createMock(SampleInterface::class)], + ['config', ['foo' => 'bar']] + ]); $factory = new LazyControllerAbstractFactory(); - $controller = $factory($this->container->reveal(), ControllerWithMixedConstructorParameters::class); + $controller = $factory($this->container, ControllerWithMixedConstructorParameters::class); $this->assertInstanceOf(ControllerWithMixedConstructorParameters::class, $controller); - $this->assertEquals($config, $controller->config); + $this->assertEquals(['foo' => 'bar'], $controller->config); $this->assertNull($controller->foo); $this->assertEquals([], $controller->options); - $this->assertSame($sample, $controller->sample); - $this->assertSame($validators, $controller->validators); + $this->assertInstanceOf(SampleInterface::class, $controller->sample); + $this->assertInstanceOf(ValidatorPluginManager::class, $controller->validators); } } diff --git a/test/Controller/Plugin/ForwardTest.php b/test/Controller/Plugin/ForwardTest.php index 5d1d4294..e551e59b 100644 --- a/test/Controller/Plugin/ForwardTest.php +++ b/test/Controller/Plugin/ForwardTest.php @@ -28,7 +28,7 @@ class ForwardTest extends TestCase { - private PluginManager $plugins; + private readonly PluginManager $plugins; /** * @var ControllerManager @@ -223,11 +223,11 @@ public function testProblemListenersAreDetachedAndReattachedWhenPluginDispatches $sharedEvents = $this->createMock(SharedEventManagerInterface::class); $sharedEvents->expects($this->once()) ->method('detach') - ->with($myCallback, 'Laminas\Stdlib\DispatchableInterface'); + ->with($myCallback, \Laminas\Stdlib\DispatchableInterface::class); $sharedEvents ->expects($this->once()) ->method('attach') - ->with('Laminas\Stdlib\DispatchableInterface', MvcEvent::EVENT_DISPATCH, $myCallback, -50); + ->with(\Laminas\Stdlib\DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, $myCallback, -50); $sharedEvents->expects($this->any()) ->method('getListeners') ->will($this->returnValue([-50 => [$myCallback]])); @@ -239,9 +239,9 @@ public function testProblemListenersAreDetachedAndReattachedWhenPluginDispatches $event->setApplication($application); $this->plugin->setListenersToDetach([[ - 'id' => 'Laminas\Stdlib\DispatchableInterface', + 'id' => \Laminas\Stdlib\DispatchableInterface::class, 'event' => MvcEvent::EVENT_DISPATCH, - 'class' => 'LaminasTest\Mvc\Controller\Plugin\TestAsset\ListenerStub', + 'class' => \LaminasTest\Mvc\Controller\Plugin\TestAsset\ListenerStub::class, ]]); $result = $this->plugin->dispatch('forward'); @@ -256,11 +256,11 @@ public function testInvokableProblemListenersAreDetachedAndReattachedWhenPluginD $sharedEvents = $this->createMock(SharedEventManagerInterface::class); $sharedEvents->expects($this->once()) ->method('detach') - ->with($myCallback, 'Laminas\Stdlib\DispatchableInterface'); + ->with($myCallback, \Laminas\Stdlib\DispatchableInterface::class); $sharedEvents ->expects($this->once()) ->method('attach') - ->with('Laminas\Stdlib\DispatchableInterface', MvcEvent::EVENT_DISPATCH, $myCallback, -50); + ->with(\Laminas\Stdlib\DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, $myCallback, -50); $sharedEvents->expects($this->any()) ->method('getListeners') ->will($this->returnValue([-50 => [$myCallback]])); @@ -272,9 +272,9 @@ public function testInvokableProblemListenersAreDetachedAndReattachedWhenPluginD $event->setApplication($application); $this->plugin->setListenersToDetach([[ - 'id' => 'Laminas\Stdlib\DispatchableInterface', + 'id' => \Laminas\Stdlib\DispatchableInterface::class, 'event' => MvcEvent::EVENT_DISPATCH, - 'class' => 'LaminasTest\Mvc\Controller\Plugin\TestAsset\ListenerStub', + 'class' => \LaminasTest\Mvc\Controller\Plugin\TestAsset\ListenerStub::class, ]]); $result = $this->plugin->dispatch('forward'); diff --git a/test/Controller/Plugin/TestAsset/SamplePluginFactory.php b/test/Controller/Plugin/TestAsset/SamplePluginFactory.php index 7824b306..deed1471 100644 --- a/test/Controller/Plugin/TestAsset/SamplePluginFactory.php +++ b/test/Controller/Plugin/TestAsset/SamplePluginFactory.php @@ -7,7 +7,7 @@ class SamplePluginFactory implements FactoryInterface { - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new SamplePlugin(); } diff --git a/test/Controller/Plugin/TestAsset/SamplePluginWithConstructorFactory.php b/test/Controller/Plugin/TestAsset/SamplePluginWithConstructorFactory.php index d2897373..95ebc987 100644 --- a/test/Controller/Plugin/TestAsset/SamplePluginWithConstructorFactory.php +++ b/test/Controller/Plugin/TestAsset/SamplePluginWithConstructorFactory.php @@ -9,7 +9,7 @@ class SamplePluginWithConstructorFactory implements FactoryInterface { protected $options; - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new SamplePluginWithConstructor($options); } diff --git a/test/Controller/RestfulControllerTest.php b/test/Controller/RestfulControllerTest.php index 81ef3d9b..220b5976 100644 --- a/test/Controller/RestfulControllerTest.php +++ b/test/Controller/RestfulControllerTest.php @@ -417,7 +417,7 @@ public function testParsingDataAsJsonWillReturnAsArray() $this->assertEquals(['entity' => ['foo' => 'bar']], $result); } - public function matchingContentTypes() + public static function matchingContentTypes() { return [ 'exact-first' => ['application/hal+json'], @@ -439,7 +439,7 @@ public function testRequestingContentTypeReturnsTrueForValidMatches($contentType )); } - public function nonMatchingContentTypes() + public static function nonMatchingContentTypes() { return [ 'specific-type' => ['application/xml'], @@ -529,7 +529,7 @@ public function testNotImplementedMethodSets504HttpCode($method, $content, array $this->assertEquals('Method Not Allowed', $this->response->getReasonPhrase()); } - public function providerNotImplementedMethodSets504HttpCodeProvider() + public static function providerNotImplementedMethodSets504HttpCodeProvider() { return [ ['DELETE', [], ['id' => 1]], // AbstractRestfulController::delete() diff --git a/test/Controller/TestAsset/ControllerLoaderAbstractFactory.php b/test/Controller/TestAsset/ControllerLoaderAbstractFactory.php index 3a17427c..3a0e5d71 100644 --- a/test/Controller/TestAsset/ControllerLoaderAbstractFactory.php +++ b/test/Controller/TestAsset/ControllerLoaderAbstractFactory.php @@ -22,7 +22,7 @@ public function canCreate(ContainerInterface $container, $name) return class_exists($classname); } - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $classname = $this->classmap[$name]; return new $classname; diff --git a/test/Controller/TestAsset/ControllerWithMixedConstructorParameters.php b/test/Controller/TestAsset/ControllerWithMixedConstructorParameters.php index 2d215632..862b879d 100644 --- a/test/Controller/TestAsset/ControllerWithMixedConstructorParameters.php +++ b/test/Controller/TestAsset/ControllerWithMixedConstructorParameters.php @@ -18,7 +18,7 @@ public function __construct( ValidatorPluginManager $validators, array $config, $foo, - array $options = null + ?array $options = null ) { $this->sample = $sample; $this->validators = $validators; diff --git a/test/Controller/TestAsset/UneventfulController.php b/test/Controller/TestAsset/UneventfulController.php index 7e3fb7f6..04c25f75 100644 --- a/test/Controller/TestAsset/UneventfulController.php +++ b/test/Controller/TestAsset/UneventfulController.php @@ -8,7 +8,7 @@ class UneventfulController implements DispatchableInterface { - public function dispatch(RequestInterface $request, Response $response = null) + public function dispatch(RequestInterface $request, ?Response $response = null) { } } diff --git a/test/Controller/TestAsset/UnlocatableControllerLoaderAbstractFactory.php b/test/Controller/TestAsset/UnlocatableControllerLoaderAbstractFactory.php index cf4d477e..0501c0a6 100644 --- a/test/Controller/TestAsset/UnlocatableControllerLoaderAbstractFactory.php +++ b/test/Controller/TestAsset/UnlocatableControllerLoaderAbstractFactory.php @@ -12,7 +12,7 @@ public function canCreate(ContainerInterface $container, $name) return false; } - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { } } diff --git a/test/Controller/TestAsset/UnlocatableEventfulController.php b/test/Controller/TestAsset/UnlocatableEventfulController.php index b53734d1..83ccc61d 100644 --- a/test/Controller/TestAsset/UnlocatableEventfulController.php +++ b/test/Controller/TestAsset/UnlocatableEventfulController.php @@ -22,7 +22,7 @@ public function getEvent() return $this->event; } - public function dispatch(Request $request, Response $response = null) + public function dispatch(Request $request, ?Response $response = null) { } } diff --git a/test/DispatchListenerTest.php b/test/DispatchListenerTest.php index 9ddd05be..15140adb 100644 --- a/test/DispatchListenerTest.php +++ b/test/DispatchListenerTest.php @@ -21,25 +21,23 @@ class DispatchListenerTest extends TestCase { - use ProphecyTrait; - - public function createMvcEvent($controllerMatched) + private function createMvcEvent($controllerMatched) { $response = new Response(); - $routeMatch = $this->prophesize(RouteMatch::class); - $routeMatch->getParam('controller', 'not-found')->willReturn('path'); + $routeMatch = $this->createMock(RouteMatch::class); + $routeMatch->method('getParam')->with('controller', 'not-found')->willReturn('path'); $eventManager = new EventManager(); - $application = $this->prophesize(Application::class); - $application->getEventManager()->willReturn($eventManager); - $application->getResponse()->willReturn($response); + $application = $this->createMock(Application::class); + $application->method('getEventManager')->willReturn($eventManager); + $application->method('getResponse')->willReturn($response); $event = new MvcEvent(); $event->setRequest(new Request()); $event->setResponse($response); - $event->setApplication($application->reveal()); - $event->setRouteMatch($routeMatch->reveal()); + $event->setApplication($application); + $event->setRouteMatch($routeMatch); return $event; } @@ -116,7 +114,7 @@ public function testWillNotDispatchWhenAnMvcEventResultIsAlreadySet(mixed $alrea /** * @return mixed[][] */ - public function alreadySetMvcEventResultProvider() + public static function alreadySetMvcEventResultProvider() { return [ [123], @@ -124,13 +122,89 @@ public function alreadySetMvcEventResultProvider() [false], [[]], [new stdClass()], - [$this], - [$this->createMock(ModelInterface::class)], - [$this->createMock(ResponseInterface::class)], - [$this->createMock(Response::class)], [['view model data' => 'as an array']], [['foo' => new stdClass()]], ['a response string'], ]; } + + public function testWillNotDispatchWhenAnMvcEventResultIsAlreadySetWithModelInterface() : void + { + $alreadySetResult = $this->createMock(ModelInterface::class); + $event = $this->createMvcEvent('path'); + + $event->setResult($alreadySetResult); + + $listener = new DispatchListener(new ControllerManager(new ServiceManager(), ['abstract_factories' => [ + UnlocatableControllerLoaderAbstractFactory::class, + ]])); + + $event->getApplication()->getEventManager()->attach(MvcEvent::EVENT_DISPATCH_ERROR, static function () : void { + self::fail('No dispatch failures should be raised - dispatch should be skipped'); + }); + + $listener->onDispatch($event); + + self::assertSame($alreadySetResult, $event->getResult(), 'The event result was not replaced'); + } + + public function testWillNotDispatchWhenAnMvcEventResultIsAlreadySetWithResponseInterface() : void + { + $alreadySetResult = $this->createMock(ResponseInterface::class); + $event = $this->createMvcEvent('path'); + + $event->setResult($alreadySetResult); + + $listener = new DispatchListener(new ControllerManager(new ServiceManager(), ['abstract_factories' => [ + UnlocatableControllerLoaderAbstractFactory::class, + ]])); + + $event->getApplication()->getEventManager()->attach(MvcEvent::EVENT_DISPATCH_ERROR, static function () : void { + self::fail('No dispatch failures should be raised - dispatch should be skipped'); + }); + + $listener->onDispatch($event); + + self::assertSame($alreadySetResult, $event->getResult(), 'The event result was not replaced'); + } + + public function testWillNotDispatchWhenAnMvcEventResultIsAlreadySetWithResponse() : void + { + $alreadySetResult = $this->createMock(Response::class); + $event = $this->createMvcEvent('path'); + + $event->setResult($alreadySetResult); + + $listener = new DispatchListener(new ControllerManager(new ServiceManager(), ['abstract_factories' => [ + UnlocatableControllerLoaderAbstractFactory::class, + ]])); + + $event->getApplication()->getEventManager()->attach(MvcEvent::EVENT_DISPATCH_ERROR, static function () : void { + self::fail('No dispatch failures should be raised - dispatch should be skipped'); + }); + + $listener->onDispatch($event); + + self::assertSame($alreadySetResult, $event->getResult(), 'The event result was not replaced'); + } + + public function testWillNotDispatchWhenAnMvcEventResultIsAlreadySetWithThis() : void + { + $alreadySetResult = $this; + $event = $this->createMvcEvent('path'); + + $event->setResult($alreadySetResult); + + $listener = new DispatchListener(new ControllerManager(new ServiceManager(), ['abstract_factories' => [ + UnlocatableControllerLoaderAbstractFactory::class, + ]])); + + $event->getApplication()->getEventManager()->attach(MvcEvent::EVENT_DISPATCH_ERROR, static function () : void { + self::fail('No dispatch failures should be raised - dispatch should be skipped'); + }); + + $listener->onDispatch($event); + + self::assertSame($alreadySetResult, $event->getResult(), 'The event result was not replaced'); + } } diff --git a/test/ResponseSender/AbstractResponseSenderTest.php b/test/ResponseSender/AbstractResponseSenderTest.php index 3daf9606..25f79b72 100644 --- a/test/ResponseSender/AbstractResponseSenderTest.php +++ b/test/ResponseSender/AbstractResponseSenderTest.php @@ -26,7 +26,7 @@ public function testSendHeadersTwoTimesSendsOnlyOnce() $response->getHeaders()->addHeaders($headers); $mockSendResponseEvent = $this->getMockBuilder(SendResponseEvent::class) - ->setMethods(['getResponse']) + ->onlyMethods(['getResponse']) ->getMock(); $mockSendResponseEvent->expects( @@ -76,7 +76,7 @@ public function testSendHeadersSendsStatusLast() ->will($this->returnValue('X-Test: HTTP/1.1 202 Accepted')); $mockSendResponseEvent = $this->getMockBuilder(SendResponseEvent::class) - ->setMethods(['getResponse']) + ->onlyMethods(['getResponse']) ->getMock(); $mockSendResponseEvent->expects($this->any())->method('getResponse')->will($this->returnValue($mockResponse)); diff --git a/test/ResponseSender/PhpEnvironmentResponseSenderTest.php b/test/ResponseSender/PhpEnvironmentResponseSenderTest.php index e87a090f..77ce409d 100644 --- a/test/ResponseSender/PhpEnvironmentResponseSenderTest.php +++ b/test/ResponseSender/PhpEnvironmentResponseSenderTest.php @@ -45,7 +45,7 @@ protected function getSendResponseEventMock() { $returnValue = false; $mockSendResponseEvent = $this->getMockBuilder(SendResponseEvent::class) - ->setMethods(['getResponse', 'contentSent', 'setContentSent']) + ->onlyMethods(['getResponse', 'contentSent', 'setContentSent']) ->getMock(); $mockSendResponseEvent->expects($this->any()) diff --git a/test/ResponseSender/SimpleStreamResponseSenderTest.php b/test/ResponseSender/SimpleStreamResponseSenderTest.php index 7551c100..454f1382 100644 --- a/test/ResponseSender/SimpleStreamResponseSenderTest.php +++ b/test/ResponseSender/SimpleStreamResponseSenderTest.php @@ -46,7 +46,7 @@ public function testSendResponseTwoTimesPrintsResponseOnlyOnce() protected function getSendResponseEventMock($response) { $mockSendResponseEvent = $this->getMockBuilder(SendResponseEvent::class) - ->setMethods(['getResponse']) + ->onlyMethods(['getResponse']) ->getMock(); $mockSendResponseEvent->expects($this->any())->method('getResponse')->will($this->returnValue($response)); return $mockSendResponseEvent; diff --git a/test/SendResponseListenerTest.php b/test/SendResponseListenerTest.php index 4687011b..f3f1da67 100644 --- a/test/SendResponseListenerTest.php +++ b/test/SendResponseListenerTest.php @@ -32,7 +32,7 @@ static function ($e) use (&$result) : void { ); $mockResponse = $this->getMockForAbstractClass(ResponseInterface::class); $mockMvcEvent = $this->getMockBuilder(MvcEvent::class) - ->setMethods(['getResponse']) + ->onlyMethods(['getResponse']) ->getMock(); $mockMvcEvent->expects($this->any())->method('getResponse')->will($this->returnValue($mockResponse)); $listener->sendResponse($mockMvcEvent); diff --git a/test/Service/HttpMethodListenerFactoryTest.php b/test/Service/HttpMethodListenerFactoryTest.php index f3ee1f97..225ed704 100644 --- a/test/Service/HttpMethodListenerFactoryTest.php +++ b/test/Service/HttpMethodListenerFactoryTest.php @@ -14,38 +14,29 @@ */ class HttpMethodListenerFactoryTest extends TestCase { - use ProphecyTrait; - - /** - * @var ServiceLocatorInterface|MockObject - */ - protected $serviceLocator; - - public function setUp(): void - { - $this->serviceLocator = $this->prophesize(ServiceLocatorInterface::class); - $this->serviceLocator->willImplement(ContainerInterface::class); - } - public function testCreateWithDefaults() { + $serviceLocator = $this->createMock(ServiceLocatorInterface::class); $factory = new HttpMethodListenerFactory(); - $listener = $factory($this->serviceLocator->reveal(), 'HttpMethodListener'); + $listener = $factory($serviceLocator, 'HttpMethodListener'); $this->assertTrue($listener->isEnabled()); $this->assertNotEmpty($listener->getAllowedMethods()); } public function testCreateWithConfig() { - $config['http_methods_listener'] = [ - 'enabled' => false, - 'allowed_methods' => ['FOO', 'BAR'] + $config = [ + 'http_methods_listener' => [ + 'enabled' => false, + 'allowed_methods' => ['FOO', 'BAR'] + ] ]; - $this->serviceLocator->get('config')->willReturn($config); + $serviceLocator = $this->createMock(ServiceLocatorInterface::class); + $serviceLocator->method('get')->with('config')->willReturn($config); $factory = new HttpMethodListenerFactory(); - $listener = $factory($this->serviceLocator->reveal(), 'HttpMethodListener'); + $listener = $factory($serviceLocator, 'HttpMethodListener'); $listenerConfig = $config['http_methods_listener']; diff --git a/test/Service/InjectTemplateListenerFactoryTest.php b/test/Service/InjectTemplateListenerFactoryTest.php index fd7fb370..19880ba3 100644 --- a/test/Service/InjectTemplateListenerFactoryTest.php +++ b/test/Service/InjectTemplateListenerFactoryTest.php @@ -17,8 +17,6 @@ */ class InjectTemplateListenerFactoryTest extends TestCase { - use ProphecyTrait; - public function testFactoryCanCreateInjectTemplateListener() { $this->buildInjectTemplateListenerWithConfig([]); @@ -52,17 +50,15 @@ public function testFactoryCanSetControllerMapViaArrayAccessVM() } /** - * @return \PHPUnit_Framework_MockObject_MockObject|InjectTemplateListener + * @return \PHPUnit\Framework\MockObject\MockObject|InjectTemplateListener */ private function buildInjectTemplateListenerWithConfig(mixed $config) { - $serviceLocator = $this->prophesize(ServiceLocatorInterface::class); - $serviceLocator->willImplement(ContainerInterface::class); - - $serviceLocator->get('config')->willReturn($config); + $serviceLocator = $this->createMock(ServiceLocatorInterface::class); + $serviceLocator->method('get')->willReturn($config); $factory = new InjectTemplateListenerFactory(); - $listener = $factory($serviceLocator->reveal(), 'InjectTemplateListener'); + $listener = $factory($serviceLocator, 'InjectTemplateListener'); $this->assertInstanceOf(InjectTemplateListener::class, $listener); diff --git a/test/Service/RequestFactoryTest.php b/test/Service/RequestFactoryTest.php index e44ac164..f7de8fd4 100644 --- a/test/Service/RequestFactoryTest.php +++ b/test/Service/RequestFactoryTest.php @@ -10,12 +10,11 @@ class RequestFactoryTest extends TestCase { - use ProphecyTrait; - public function testFactoryCreatesHttpRequest() { $factory = new RequestFactory(); - $request = $factory($this->prophesize(ContainerInterface::class)->reveal(), 'Request'); + $container = $this->createMock(ContainerInterface::class); + $request = $factory($container, 'Request'); $this->assertInstanceOf(HttpRequest::class, $request); } } diff --git a/test/Service/ResponseFactoryTest.php b/test/Service/ResponseFactoryTest.php index 44e71b0c..05a6e087 100644 --- a/test/Service/ResponseFactoryTest.php +++ b/test/Service/ResponseFactoryTest.php @@ -10,12 +10,11 @@ class ResponseFactoryTest extends TestCase { - use ProphecyTrait; - public function testFactoryCreatesHttpResponse() { + $container = $this->createMock(ContainerInterface::class); $factory = new ResponseFactory(); - $response = $factory($this->prophesize(ContainerInterface::class)->reveal(), 'Response'); + $response = $factory($container, 'Response'); $this->assertInstanceOf(HttpResponse::class, $response); } } diff --git a/test/Service/SendResponseListenerFactoryTest.php b/test/Service/SendResponseListenerFactoryTest.php index 84399a73..f251fe06 100644 --- a/test/Service/SendResponseListenerFactoryTest.php +++ b/test/Service/SendResponseListenerFactoryTest.php @@ -17,37 +17,50 @@ class SendResponseListenerFactoryTest extends TestCase { - use ProphecyTrait; - public function testFactoryReturnsListenerWithEventManagerFromContainer() { - $sharedEvents = $this->prophesize(SharedEventManagerInterface::class); - $events = $this->prophesize(EventManagerInterface::class); - $events->getSharedManager()->will([$sharedEvents, 'reveal']); - - $events->setIdentifiers([SendResponseListener::class, SendResponseListener::class])->shouldBeCalled(); - $events->attach( - SendResponseEvent::EVENT_SEND_RESPONSE, - Argument::type(PhpEnvironmentResponseSender::class), - -1000 - )->shouldBeCalled(); - $events->attach( - SendResponseEvent::EVENT_SEND_RESPONSE, - Argument::type(SimpleStreamResponseSender::class), - -3000 - )->shouldBeCalled(); - $events->attach( - SendResponseEvent::EVENT_SEND_RESPONSE, - Argument::type(HttpResponseSender::class), - -4000 - )->shouldBeCalled(); - - $container = $this->prophesize(ContainerInterface::class); - $container->get('EventManager')->will([$events, 'reveal']); + $sharedEvents = $this->createMock(SharedEventManagerInterface::class); + $events = $this->createMock(EventManagerInterface::class); + $events->method('getSharedManager')->willReturn($sharedEvents); + + $events->expects($this->once()) + ->method('setIdentifiers') + ->with([SendResponseListener::class, SendResponseListener::class]); + + $invokedCount = $this->exactly(3); + $events->expects($invokedCount) + ->method('attach') + ->willReturnCallback(function ($eventName, callable $listener, $priority = 1) use ($invokedCount) { + if ($invokedCount->numberOfInvocations() === 1) { + self::assertSame($eventName, SendResponseEvent::EVENT_SEND_RESPONSE); + self::assertSame(-1000, $priority); + self::assertInstanceOf(PhpEnvironmentResponseSender::class, $listener); + return; + } + + if ($invokedCount->numberOfInvocations() === 2) { + self::assertSame($eventName, SendResponseEvent::EVENT_SEND_RESPONSE); + self::assertSame(-3000, $priority); + self::assertInstanceOf(SimpleStreamResponseSender::class, $listener); + return; + } + + if ($invokedCount->numberOfInvocations() === 3) { + self::assertSame($eventName, SendResponseEvent::EVENT_SEND_RESPONSE); + self::assertSame(-4000, $priority); + self::assertInstanceOf(HttpResponseSender::class, $listener); + return; + } + + throw new \RuntimeException('Unexpected numberOfInvocations' . $invokedCount->numberOfInvocations()); + }); + + $container = $this->createMock(ContainerInterface::class); + $container->method('get')->with('EventManager')->willReturn($events); $factory = new SendResponseListenerFactory(); - $listener = $factory($container->reveal()); + $listener = $factory($container); $this->assertInstanceOf(SendResponseListener::class, $listener); - $this->assertSame($events->reveal(), $listener->getEventManager()); + $this->assertSame($events, $listener->getEventManager()); } } diff --git a/test/Service/ServiceListenerFactoryTest.php b/test/Service/ServiceListenerFactoryTest.php index eb9a5893..faba161a 100644 --- a/test/Service/ServiceListenerFactoryTest.php +++ b/test/Service/ServiceListenerFactoryTest.php @@ -15,7 +15,7 @@ class ServiceListenerFactoryTest extends TestCase public function setUp(): void { $this->sm = $this->getMockBuilder(ServiceManager::class) - ->setMethods(['get']) + ->onlyMethods(['get']) ->getMock(); $this->factory = new ServiceListenerFactory(); diff --git a/test/Service/ServiceManagerConfigTest.php b/test/Service/ServiceManagerConfigTest.php index 0f5be168..f11af743 100644 --- a/test/Service/ServiceManagerConfigTest.php +++ b/test/Service/ServiceManagerConfigTest.php @@ -36,7 +36,7 @@ protected function setUp(): void * @param null|SharedEventManagerInterface * @return EventManager */ - protected function createEventManager(SharedEventManagerInterface $sharedManager = null) + protected function createEventManager(?SharedEventManagerInterface $sharedManager = null) { return new EventManager($sharedManager ?: $this->services->get('SharedEventManager')); } @@ -99,7 +99,7 @@ public function testCanAddDelegators() /* * Create delegator closure */ - $delegator = static function ($container, $name, $callback, array $options = null) { + $delegator = static function ($container, $name, $callback, ?array $options = null) { $service = $callback(); $service->bar = 'baz'; return $service; @@ -129,7 +129,7 @@ public function testEventManagerInitializerCanBeReplaced() { $instance = $this->createMock(EventManagerAwareInterface::class); $initializer = $this->getMockBuilder(stdClass::class) - ->setMethods(['__invoke']) + ->addMethods(['__invoke']) ->getMock(); $config = new ServiceManagerConfig([ 'initializers' => [ diff --git a/test/Service/TestAsset/ControllerWithDependencies.php b/test/Service/TestAsset/ControllerWithDependencies.php index f757ce49..32e5fab5 100644 --- a/test/Service/TestAsset/ControllerWithDependencies.php +++ b/test/Service/TestAsset/ControllerWithDependencies.php @@ -19,7 +19,7 @@ public function setInjectedValue(stdClass $injected) $this->injectedValue = $injected; } - public function dispatch(RequestInterface $request, ResponseInterface $response = null) + public function dispatch(RequestInterface $request, ?ResponseInterface $response = null) { } } diff --git a/test/Service/ViewFeedStrategyFactoryTest.php b/test/Service/ViewFeedStrategyFactoryTest.php index 45ba922b..0f915fac 100644 --- a/test/Service/ViewFeedStrategyFactoryTest.php +++ b/test/Service/ViewFeedStrategyFactoryTest.php @@ -11,14 +11,12 @@ class ViewFeedStrategyFactoryTest extends TestCase { - use ProphecyTrait; - private function createContainer() { - $renderer = $this->prophesize(FeedRenderer::class); - $container = $this->prophesize(ContainerInterface::class); - $container->get('ViewFeedRenderer')->will(static fn(): object => $renderer->reveal()); - return $container->reveal(); + $renderer = $this->createMock(FeedRenderer::class); + $container = $this->createMock(ContainerInterface::class); + $container->method('get')->with('ViewFeedRenderer')->willReturn($renderer); + return $container; } public function testReturnsFeedStrategy() diff --git a/test/Service/ViewHelperManagerFactoryTest.php b/test/Service/ViewHelperManagerFactoryTest.php index 57ec81e2..c47fdbcd 100644 --- a/test/Service/ViewHelperManagerFactoryTest.php +++ b/test/Service/ViewHelperManagerFactoryTest.php @@ -29,7 +29,7 @@ public function setUp(): void /** * @return array */ - public function emptyConfiguration() + public static function emptyConfiguration() { return [ 'no-config' => [[]], @@ -52,7 +52,7 @@ public function testDoctypeFactoryDoesNotRaiseErrorOnMissingConfiguration($confi $this->assertInstanceof(Doctype::class, $doctype); } - public function urlHelperNames() + public static function urlHelperNames() { return [ ['url'], @@ -70,22 +70,22 @@ public function testUrlHelperFactoryCanBeInvokedViaShortNameOrFullClassName($nam { $this->markTestSkipped(sprintf( '%s::%s skipped until laminas-view and the url() view helper are updated to use laminas-router', - $this::class, + static::class, __FUNCTION__ )); - $routeMatch = $this->prophesize(RouteMatch::class)->reveal(); - $mvcEvent = $this->prophesize(MvcEvent::class); - $mvcEvent->getRouteMatch()->willReturn($routeMatch); + $routeMatch = $this->createMock(RouteMatch::class); + $mvcEvent = $this->createMock(MvcEvent::class); + $mvcEvent->method('getRouteMatch')->willReturn($routeMatch); - $application = $this->prophesize(Application::class); - $application->getMvcEvent()->willReturn($mvcEvent->reveal()); + $application = $this->createMock(Application::class); + $application->method('getMvcEvent')->willReturn($mvcEvent); - $router = $this->prophesize(RouteStackInterface::class)->reveal(); + $router = $this->createMock(RouteStackInterface::class); $this->services->setService('HttpRouter', $router); $this->services->setService('Router', $router); - $this->services->setService('Application', $application->reveal()); + $this->services->setService('Application', $application); $this->services->setService('config', []); $manager = $this->factory->__invoke($this->services, HelperPluginManager::class); @@ -95,7 +95,7 @@ public function testUrlHelperFactoryCanBeInvokedViaShortNameOrFullClassName($nam $this->assertAttributeSame($router, 'router', $helper, 'Router was not injected'); } - public function basePathConfiguration() + public static function basePathConfiguration() { $names = ['basepath', 'basePath', 'BasePath', BasePath::class, 'laminasviewhelperbasepath']; @@ -111,9 +111,9 @@ public function basePathConfiguration() 'request-base' => [[ 'config' => [], // fails creating plugin manager without this 'Request' => function (): object { - $request = $this->prophesize(Request::class); - $request->getBasePath()->willReturn('/foo/bat'); - return $request->reveal(); + $request = new Request(); + $request->setBasePath('/foo/bat'); + return $request; }, ], '/foo/bat'], ]; @@ -148,7 +148,7 @@ public function testBasePathHelperFactoryCanBeInvokedViaShortNameOrFullClassName $this->assertEquals($expected, $helper()); } - public function doctypeHelperNames() + public static function doctypeHelperNames() { return [ ['doctype'], diff --git a/test/Service/ViewJsonStrategyFactoryTest.php b/test/Service/ViewJsonStrategyFactoryTest.php index 93875624..6619d779 100644 --- a/test/Service/ViewJsonStrategyFactoryTest.php +++ b/test/Service/ViewJsonStrategyFactoryTest.php @@ -11,14 +11,12 @@ class ViewJsonStrategyFactoryTest extends TestCase { - use ProphecyTrait; - private function createContainer() { - $renderer = $this->prophesize(JsonRenderer::class); - $container = $this->prophesize(ContainerInterface::class); - $container->get('ViewJsonRenderer')->will(static fn(): object => $renderer->reveal()); - return $container->reveal(); + $renderer = $this->createMock(JsonRenderer::class); + $container = $this->createMock(ContainerInterface::class); + $container->method('get')->with('ViewJsonRenderer')->willReturn($renderer); + return $container; } public function testReturnsJsonStrategy() diff --git a/test/Service/ViewManagerFactoryTest.php b/test/Service/ViewManagerFactoryTest.php index 366b1402..0c9d021b 100644 --- a/test/Service/ViewManagerFactoryTest.php +++ b/test/Service/ViewManagerFactoryTest.php @@ -6,18 +6,15 @@ use Laminas\Mvc\Service\ViewManagerFactory; use Laminas\Mvc\View\Http\ViewManager as HttpViewManager; use PHPUnit\Framework\TestCase; -use Prophecy\PhpUnit\ProphecyTrait; class ViewManagerFactoryTest extends TestCase { - use ProphecyTrait; - private function createContainer() { - $http = $this->prophesize(HttpViewManager::class); - $container = $this->prophesize(ContainerInterface::class); - $container->get('HttpViewManager')->will(static fn(): object => $http->reveal()); - return $container->reveal(); + $http = $this->createMock(HttpViewManager::class); + $container = $this->createMock(ContainerInterface::class); + $container->method('get')->with('HttpViewManager')->willReturn($http); + return $container; } public function testReturnsHttpViewManager() diff --git a/test/Service/ViewPrefixPathStackResolverFactoryTest.php b/test/Service/ViewPrefixPathStackResolverFactoryTest.php index 5cf37d3a..22d30c3a 100644 --- a/test/Service/ViewPrefixPathStackResolverFactoryTest.php +++ b/test/Service/ViewPrefixPathStackResolverFactoryTest.php @@ -11,14 +11,10 @@ class ViewPrefixPathStackResolverFactoryTest extends TestCase { - use ProphecyTrait; - public function testCreateService() { - $serviceLocator = $this->prophesize(ServiceLocatorInterface::class); - $serviceLocator->willImplement(ContainerInterface::class); - - $serviceLocator->get('config')->willReturn([ + $serviceLocator = $this->createMock(ServiceLocatorInterface::class); + $serviceLocator->method('get')->willReturn([ 'view_manager' => [ 'prefix_template_path_stack' => [ 'album/' => [], @@ -27,7 +23,7 @@ public function testCreateService() ]); $factory = new ViewPrefixPathStackResolverFactory(); - $resolver = $factory($serviceLocator->reveal(), 'ViewPrefixPathStackResolver'); + $resolver = $factory($serviceLocator, 'ViewPrefixPathStackResolver'); $this->assertInstanceOf(PrefixPathStackResolver::class, $resolver); } diff --git a/test/TestAsset/Locator.php b/test/TestAsset/Locator.php index 2bd9c043..b73e827a 100644 --- a/test/TestAsset/Locator.php +++ b/test/TestAsset/Locator.php @@ -26,7 +26,7 @@ public function has($name) return (isset($this->services[$name])); } - public function build($name, array $options = null) + public function build($name, ?array $options = null) { if (! isset($this->services[$name])) { throw new ServiceNotFoundException(); diff --git a/test/TestAsset/MiddlewareAbstractFactory.php b/test/TestAsset/MiddlewareAbstractFactory.php index 501b6cca..679a2586 100644 --- a/test/TestAsset/MiddlewareAbstractFactory.php +++ b/test/TestAsset/MiddlewareAbstractFactory.php @@ -21,7 +21,7 @@ public function canCreate(ContainerInterface $container, $name) return class_exists($classname); } - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { $classname = $this->classmap[$name]; return new $classname; diff --git a/test/TestAsset/PathController.php b/test/TestAsset/PathController.php index 6729b2eb..16ccbe5d 100644 --- a/test/TestAsset/PathController.php +++ b/test/TestAsset/PathController.php @@ -8,7 +8,7 @@ class PathController implements DispatchableInterface { - public function dispatch(Request $request, Response $response = null) + public function dispatch(Request $request, ?Response $response = null) { if (! $response) { $response = new HttpResponse(); diff --git a/test/View/CreateViewModelListenerTest.php b/test/View/CreateViewModelListenerTest.php index 8b54d702..065c9668 100644 --- a/test/View/CreateViewModelListenerTest.php +++ b/test/View/CreateViewModelListenerTest.php @@ -36,7 +36,7 @@ public function testReCastsAssocArrayEventResultAsViewModel() $this->assertEquals($array, $test->getVariables()); } - public function nonAssocArrayResults() + public static function nonAssocArrayResults() { return [ [null], diff --git a/test/View/RouteNotFoundStrategyTest.php b/test/View/RouteNotFoundStrategyTest.php index 6f21500f..53a5ec4f 100644 --- a/test/View/RouteNotFoundStrategyTest.php +++ b/test/View/RouteNotFoundStrategyTest.php @@ -24,7 +24,7 @@ public function setUp(): void $this->strategy = new RouteNotFoundStrategy(); } - public function notFoundResponseProvider() + public static function notFoundResponseProvider() { return [ ['bar', 'assertEquals'],