diff --git a/.laminas-ci.json b/.laminas-ci.json
new file mode 100644
index 00000000..bce3fa21
--- /dev/null
+++ b/.laminas-ci.json
@@ -0,0 +1,5 @@
+{
+ "ignore_php_platform_requirements": {
+ "8.1": true
+ }
+}
diff --git a/composer.json b/composer.json
index 6c367cf8..d910c3ec 100644
--- a/composer.json
+++ b/composer.json
@@ -24,22 +24,21 @@
"sort-packages": true
},
"require": {
- "php": "^7.3 || ~8.0.0",
+ "php": "~7.4.0 || ~8.0.0 || ~8.1.0",
"container-interop/container-interop": "^1.2",
"laminas/laminas-stdlib": "^3.2.1",
- "laminas/laminas-zendframework-bridge": "^1.0",
"psr/container": "^1.0"
},
"require-dev": {
"composer/package-versions-deprecated": "^1.0",
- "laminas/laminas-coding-standard": "~2.2.0",
+ "laminas/laminas-coding-standard": "~2.2.1",
"laminas/laminas-container-config-test": "^0.3",
"laminas/laminas-dependency-plugin": "^2.1.2",
- "mikey179/vfsstream": "^1.6.8",
- "ocramius/proxy-manager": "^2.2.3",
- "phpbench/phpbench": "^1.0.4",
+ "mikey179/vfsstream": "^1.6.10@alpha",
+ "ocramius/proxy-manager": "^2.11",
+ "phpbench/phpbench": "^1.1",
"phpspec/prophecy-phpunit": "^2.0",
- "phpunit/phpunit": "^9.4",
+ "phpunit/phpunit": "^9.5.5",
"psalm/plugin-phpunit": "^0.16.1",
"vimeo/psalm": "^4.8"
},
@@ -49,6 +48,7 @@
},
"conflict": {
"zendframework/zend-code": "<3.3.1",
+ "zendframework/zend-servicemanager": "*",
"laminas/laminas-code": "<3.3.1"
},
"suggest": {
@@ -60,6 +60,9 @@
}
},
"autoload-dev": {
+ "files": [
+ "test/autoload.php"
+ ],
"psr-4": {
"LaminasTest\\ServiceManager\\": "test/",
"LaminasBench\\ServiceManager\\": "benchmarks/"
@@ -80,8 +83,5 @@
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml",
"static-analysis" : "psalm --shepherd --stats"
- },
- "replace": {
- "zendframework/zend-servicemanager": "^3.4.0"
}
}
diff --git a/composer.lock b/composer.lock
index b88a2a31..3c0a0967 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": "e090ce6236c2e7929878aca459fbdf52",
+ "content-hash": "da9c8fc1ea22138319b001f2a867c711",
"packages": [
{
"name": "container-interop/container-interop",
@@ -44,29 +44,30 @@
},
{
"name": "laminas/laminas-stdlib",
- "version": "3.3.1",
+ "version": "3.6.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-stdlib.git",
- "reference": "d81c7ffe602ed0e6ecb18691019111c0f4bf1efe"
+ "reference": "c53d8537f108fac3fae652677a19735db730ba46"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/d81c7ffe602ed0e6ecb18691019111c0f4bf1efe",
- "reference": "d81c7ffe602ed0e6ecb18691019111c0f4bf1efe",
+ "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/c53d8537f108fac3fae652677a19735db730ba46",
+ "reference": "c53d8537f108fac3fae652677a19735db730ba46",
"shasum": ""
},
"require": {
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^7.3 || ^8.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
- "replace": {
- "zendframework/zend-stdlib": "^3.2.1"
+ "conflict": {
+ "zendframework/zend-stdlib": "*"
},
"require-dev": {
- "laminas/laminas-coding-standard": "~1.0.0",
+ "laminas/laminas-coding-standard": "~2.3.0",
"phpbench/phpbench": "^0.17.1",
- "phpunit/phpunit": "~9.3.7"
+ "phpunit/phpunit": "~9.3.7",
+ "psalm/plugin-phpunit": "^0.16.0",
+ "vimeo/psalm": "^4.7"
},
"type": "library",
"autoload": {
@@ -98,116 +99,7 @@
"type": "community_bridge"
}
],
- "time": "2020-11-19T20:18:59+00:00"
- },
- {
- "name": "laminas/laminas-zendframework-bridge",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
- "reference": "6ede70583e101030bcace4dcddd648f760ddf642"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642",
- "reference": "6ede70583e101030bcace4dcddd648f760ddf642",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
- "squizlabs/php_codesniffer": "^3.5"
- },
- "type": "library",
- "extra": {
- "laminas": {
- "module": "Laminas\\ZendFrameworkBridge"
- }
- },
- "autoload": {
- "files": [
- "src/autoload.php"
- ],
- "psr-4": {
- "Laminas\\ZendFrameworkBridge\\": "src//"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "description": "Alias legacy ZF class names to Laminas Project equivalents.",
- "keywords": [
- "ZendFramework",
- "autoloading",
- "laminas",
- "zf"
- ],
- "support": {
- "forum": "https://discourse.laminas.dev/",
- "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues",
- "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom",
- "source": "https://github.com/laminas/laminas-zendframework-bridge"
- },
- "funding": [
- {
- "url": "https://funding.communitybridge.org/projects/laminas-project",
- "type": "community_bridge"
- }
- ],
- "time": "2020-09-14T14:23:00+00:00"
- },
- {
- "name": "psr/cache",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/cache.git",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Cache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for caching libraries",
- "keywords": [
- "cache",
- "psr",
- "psr-6"
- ],
- "support": {
- "source": "https://github.com/php-fig/cache/tree/master"
- },
- "time": "2016-08-06T20:24:11+00:00"
+ "time": "2021-09-02T16:11:32+00:00"
},
{
"name": "psr/container",
@@ -427,16 +319,16 @@
},
{
"name": "composer/package-versions-deprecated",
- "version": "1.11.99.2",
+ "version": "1.11.99.4",
"source": {
"type": "git",
"url": "https://github.com/composer/package-versions-deprecated.git",
- "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c"
+ "reference": "b174585d1fe49ceed21928a945138948cb394600"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/c6522afe5540d5fc46675043d3ed5a45a740b27c",
- "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600",
"shasum": ""
},
"require": {
@@ -480,7 +372,7 @@
"description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
"support": {
"issues": "https://github.com/composer/package-versions-deprecated/issues",
- "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.2"
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4"
},
"funding": [
{
@@ -496,7 +388,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-24T07:46:03+00:00"
+ "time": "2021-09-13T08:41:34+00:00"
},
{
"name": "composer/semver",
@@ -581,21 +473,21 @@
},
{
"name": "composer/xdebug-handler",
- "version": "2.0.1",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496"
+ "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/964adcdd3a28bf9ed5d9ac6450064e0d71ed7496",
- "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
+ "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0"
+ "psr/log": "^1 || ^2 || ^3"
},
"require-dev": {
"phpstan/phpstan": "^0.12.55",
@@ -625,7 +517,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/2.0.1"
+ "source": "https://github.com/composer/xdebug-handler/tree/2.0.2"
},
"funding": [
{
@@ -641,7 +533,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-05T19:37:51+00:00"
+ "time": "2021-07-31T17:03:58+00:00"
},
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
@@ -752,16 +644,16 @@
},
{
"name": "doctrine/annotations",
- "version": "1.13.1",
+ "version": "1.13.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
- "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f"
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f",
- "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08",
"shasum": ""
},
"require": {
@@ -818,9 +710,9 @@
],
"support": {
"issues": "https://github.com/doctrine/annotations/issues",
- "source": "https://github.com/doctrine/annotations/tree/1.13.1"
+ "source": "https://github.com/doctrine/annotations/tree/1.13.2"
},
- "time": "2021-05-16T18:07:53+00:00"
+ "time": "2021-08-05T19:00:23+00:00"
},
{
"name": "doctrine/instantiator",
@@ -1074,39 +966,37 @@
},
{
"name": "laminas/laminas-code",
- "version": "3.5.1",
+ "version": "4.4.2",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
- "reference": "b549b70c0bb6e935d497f84f750c82653326ac77"
+ "reference": "54251ab2b16c41c6980387839496b235f5f6e10b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-code/zipball/b549b70c0bb6e935d497f84f750c82653326ac77",
- "reference": "b549b70c0bb6e935d497f84f750c82653326ac77",
+ "url": "https://api.github.com/repos/laminas/laminas-code/zipball/54251ab2b16c41c6980387839496b235f5f6e10b",
+ "reference": "54251ab2b16c41c6980387839496b235f5f6e10b",
"shasum": ""
},
"require": {
- "laminas/laminas-eventmanager": "^3.3",
- "laminas/laminas-zendframework-bridge": "^1.1",
- "php": "^7.3 || ~8.0.0"
+ "php": "^7.4 || ~8.0.0"
},
"conflict": {
"phpspec/prophecy": "<1.9.0"
},
- "replace": {
- "zendframework/zend-code": "^3.4.1"
- },
"require-dev": {
"doctrine/annotations": "^1.10.4",
"ext-phar": "*",
- "laminas/laminas-coding-standard": "^1.0.0",
+ "laminas/laminas-coding-standard": "^2.1.4",
"laminas/laminas-stdlib": "^3.3.0",
- "phpunit/phpunit": "^9.4.2"
+ "phpunit/phpunit": "^9.4.2",
+ "psalm/plugin-phpunit": "^0.14.0",
+ "vimeo/psalm": "^4.3.1"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
- "laminas/laminas-stdlib": "Laminas\\Stdlib component"
+ "laminas/laminas-stdlib": "Laminas\\Stdlib component",
+ "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework"
},
"type": "library",
"autoload": {
@@ -1122,7 +1012,8 @@
"homepage": "https://laminas.dev",
"keywords": [
"code",
- "laminas"
+ "laminas",
+ "laminasframework"
],
"support": {
"chat": "https://laminas.dev/chat",
@@ -1138,7 +1029,7 @@
"type": "community_bridge"
}
],
- "time": "2020-11-30T20:16:31+00:00"
+ "time": "2021-07-09T11:58:40+00:00"
},
{
"name": "laminas/laminas-coding-standard",
@@ -1195,16 +1086,16 @@
},
{
"name": "laminas/laminas-container-config-test",
- "version": "0.3.0",
+ "version": "0.3.2",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-container-config-test.git",
- "reference": "2f2380caead15c58d2fd09da105259e129b641f0"
+ "reference": "090ccad748e822eb0c113c834811936cf515786f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-container-config-test/zipball/2f2380caead15c58d2fd09da105259e129b641f0",
- "reference": "2f2380caead15c58d2fd09da105259e129b641f0",
+ "url": "https://api.github.com/repos/laminas/laminas-container-config-test/zipball/090ccad748e822eb0c113c834811936cf515786f",
+ "reference": "090ccad748e822eb0c113c834811936cf515786f",
"shasum": ""
},
"require": {
@@ -1220,7 +1111,9 @@
"laminas/laminas-coding-standard": "~1.0.0",
"laminas/laminas-pimple-config": "^1.1",
"laminas/laminas-servicemanager": "^3.3.2",
- "phpunit/phpunit": "^7.5.15 || ^8.3.4"
+ "phpunit/phpunit": "^7.5.15 || ^8.3.4",
+ "psalm/plugin-phpunit": "^0.15.1",
+ "vimeo/psalm": "^4.7"
},
"type": "library",
"autoload": {
@@ -1260,30 +1153,34 @@
"type": "community_bridge"
}
],
- "time": "2020-12-05T22:24:49+00:00"
+ "time": "2021-04-19T14:56:37+00:00"
},
{
"name": "laminas/laminas-dependency-plugin",
- "version": "2.1.2",
+ "version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-dependency-plugin.git",
- "reference": "c5b4bf87729d6f38c73ca8ed22a5d62ec641d075"
+ "reference": "73cfb63ddca9d6bfedad5e0a038f6d55063975a3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-dependency-plugin/zipball/c5b4bf87729d6f38c73ca8ed22a5d62ec641d075",
- "reference": "c5b4bf87729d6f38c73ca8ed22a5d62ec641d075",
+ "url": "https://api.github.com/repos/laminas/laminas-dependency-plugin/zipball/73cfb63ddca9d6bfedad5e0a038f6d55063975a3",
+ "reference": "73cfb63ddca9d6bfedad5e0a038f6d55063975a3",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.1 || ^2.0",
- "php": "^7.3 || ~8.0.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
"require-dev": {
"composer/composer": "^1.9 || ^2.0",
- "mikey179/vfsstream": "^1.6",
- "roave/security-advisories": "dev-master"
+ "laminas/laminas-coding-standard": "^2.2.1",
+ "mikey179/vfsstream": "^1.6.10@alpha",
+ "phpunit/phpunit": "^9.5.5",
+ "psalm/plugin-phpunit": "^0.15.1",
+ "roave/security-advisories": "dev-master",
+ "vimeo/psalm": "^4.5"
},
"type": "composer-plugin",
"extra": {
@@ -1301,7 +1198,7 @@
"description": "Replace zendframework and zfcampus packages with their Laminas Project equivalents.",
"support": {
"issues": "https://github.com/laminas/laminas-dependency-plugin/issues",
- "source": "https://github.com/laminas/laminas-dependency-plugin/tree/2.1.2"
+ "source": "https://github.com/laminas/laminas-dependency-plugin/tree/2.2.0"
},
"funding": [
{
@@ -1309,71 +1206,61 @@
"type": "community_bridge"
}
],
- "time": "2021-02-15T16:44:31+00:00"
+ "time": "2021-09-08T17:51:35+00:00"
},
{
- "name": "laminas/laminas-eventmanager",
- "version": "3.3.0",
+ "name": "laminas/laminas-zendframework-bridge",
+ "version": "1.4.0",
"source": {
"type": "git",
- "url": "https://github.com/laminas/laminas-eventmanager.git",
- "reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082"
+ "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
+ "reference": "bf180a382393e7db5c1e8d0f2ec0c4af9c724baf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/1940ccf30e058b2fd66f5a9d696f1b5e0027b082",
- "reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/bf180a382393e7db5c1e8d0f2ec0c4af9c724baf",
+ "reference": "bf180a382393e7db5c1e8d0f2ec0c4af9c724baf",
"shasum": ""
},
"require": {
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^7.3 || ^8.0"
- },
- "replace": {
- "zendframework/zend-eventmanager": "^3.2.1"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
"require-dev": {
- "container-interop/container-interop": "^1.1",
- "laminas/laminas-coding-standard": "~1.0.0",
- "laminas/laminas-stdlib": "^2.7.3 || ^3.0",
- "phpbench/phpbench": "^0.17.1",
- "phpunit/phpunit": "^8.5.8"
- },
- "suggest": {
- "container-interop/container-interop": "^1.1, to use the lazy listeners feature",
- "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
+ "phpunit/phpunit": "^9.3",
+ "psalm/plugin-phpunit": "^0.15.1",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.6"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "3.3.x-dev",
- "dev-develop": "3.4.x-dev"
+ "laminas": {
+ "module": "Laminas\\ZendFrameworkBridge"
}
},
"autoload": {
+ "files": [
+ "src/autoload.php"
+ ],
"psr-4": {
- "Laminas\\EventManager\\": "src/"
+ "Laminas\\ZendFrameworkBridge\\": "src//"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
- "description": "Trigger and listen to events within a PHP application",
- "homepage": "https://laminas.dev",
+ "description": "Alias legacy ZF class names to Laminas Project equivalents.",
"keywords": [
- "event",
- "eventmanager",
- "events",
- "laminas"
+ "ZendFramework",
+ "autoloading",
+ "laminas",
+ "zf"
],
"support": {
- "chat": "https://laminas.dev/chat",
- "docs": "https://docs.laminas.dev/laminas-eventmanager/",
- "forum": "https://discourse.laminas.dev",
- "issues": "https://github.com/laminas/laminas-eventmanager/issues",
- "rss": "https://github.com/laminas/laminas-eventmanager/releases.atom",
- "source": "https://github.com/laminas/laminas-eventmanager"
+ "forum": "https://discourse.laminas.dev/",
+ "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues",
+ "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom",
+ "source": "https://github.com/laminas/laminas-zendframework-bridge"
},
"funding": [
{
@@ -1381,20 +1268,20 @@
"type": "community_bridge"
}
],
- "time": "2020-08-25T11:10:44+00:00"
+ "time": "2021-09-03T17:53:30+00:00"
},
{
"name": "mikey179/vfsstream",
- "version": "v1.6.8",
+ "version": "v1.6.10-alpha.0",
"source": {
"type": "git",
"url": "https://github.com/bovigo/vfsStream.git",
- "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe"
+ "reference": "78cda242630dfdcc3e3b551107c7868347ec642c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/231c73783ebb7dd9ec77916c10037eff5a2b6efe",
- "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe",
+ "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/78cda242630dfdcc3e3b551107c7868347ec642c",
+ "reference": "78cda242630dfdcc3e3b551107c7868347ec642c",
"shasum": ""
},
"require": {
@@ -1432,7 +1319,7 @@
"source": "https://github.com/bovigo/vfsStream/tree/master",
"wiki": "https://github.com/bovigo/vfsStream/wiki"
},
- "time": "2019-10-30T15:31:00+00:00"
+ "time": "2021-08-02T03:15:02+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -1601,40 +1488,47 @@
},
{
"name": "ocramius/proxy-manager",
- "version": "2.2.3",
+ "version": "2.13.0",
"source": {
"type": "git",
"url": "https://github.com/Ocramius/ProxyManager.git",
- "reference": "4d154742e31c35137d5374c998e8f86b54db2e2f"
+ "reference": "21e2b4aa7d7661e7641cc6362fc8635ddcfa8464"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/4d154742e31c35137d5374c998e8f86b54db2e2f",
- "reference": "4d154742e31c35137d5374c998e8f86b54db2e2f",
+ "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/21e2b4aa7d7661e7641cc6362fc8635ddcfa8464",
+ "reference": "21e2b4aa7d7661e7641cc6362fc8635ddcfa8464",
"shasum": ""
},
"require": {
- "ocramius/package-versions": "^1.1.3",
- "php": "^7.2.0",
- "zendframework/zend-code": "^3.3.0"
+ "composer-runtime-api": "^2.1.0",
+ "laminas/laminas-code": "^4.3.0",
+ "php": "~7.4.1 || ~8.0.0",
+ "webimpress/safe-writer": "^2.2.0"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.6.1",
+ "laminas/laminas-stdlib": "<3.2.1",
+ "thecodingmachine/safe": "<1.3.3",
+ "zendframework/zend-stdlib": "<3.2.1"
},
"require-dev": {
- "couscous/couscous": "^1.6.1",
+ "codelicia/xulieta": "^0.1.6",
+ "doctrine/coding-standard": "^8.2.1",
"ext-phar": "*",
- "humbug/humbug": "1.0.0-RC.0@RC",
- "nikic/php-parser": "^3.1.1",
- "padraic/phpunit-accelerator": "dev-master@DEV",
- "phpbench/phpbench": "^0.12.2",
- "phpstan/phpstan": "dev-master#856eb10a81c1d27c701a83f167dc870fd8f4236a as 0.9.999",
- "phpstan/phpstan-phpunit": "dev-master#5629c0a1f4a9c417cb1077cf6693ad9753895761",
- "phpunit/phpunit": "^6.4.3",
- "squizlabs/php_codesniffer": "^2.9.1"
+ "infection/infection": "^0.21.5",
+ "nikic/php-parser": "^4.10.5",
+ "phpbench/phpbench": "^0.17.1 || 1.0.0-alpha2",
+ "phpunit/phpunit": "^9.5.4",
+ "slevomat/coding-standard": "^6.3.10",
+ "squizlabs/php_codesniffer": "^3.6.0",
+ "vimeo/psalm": "^4.4.1"
},
"suggest": {
- "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
- "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)",
- "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)",
- "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)"
+ "laminas/laminas-json": "To have the JsonRpc adapter (Remote Object feature)",
+ "laminas/laminas-soap": "To have the Soap adapter (Remote Object feature)",
+ "laminas/laminas-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)",
+ "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects"
},
"type": "library",
"extra": {
@@ -1643,8 +1537,8 @@
}
},
"autoload": {
- "psr-0": {
- "ProxyManager\\": "src"
+ "psr-4": {
+ "ProxyManager\\": "src/ProxyManager"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1669,9 +1563,19 @@
],
"support": {
"issues": "https://github.com/Ocramius/ProxyManager/issues",
- "source": "https://github.com/Ocramius/ProxyManager/tree/2.2.x"
+ "source": "https://github.com/Ocramius/ProxyManager/tree/2.13.0"
},
- "time": "2019-08-10T08:37:15+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/Ocramius",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-06-09T10:16:06+00:00"
},
{
"name": "openlss/lib-array2xml",
@@ -1728,16 +1632,16 @@
},
{
"name": "phar-io/manifest",
- "version": "2.0.1",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
"shasum": ""
},
"require": {
@@ -1782,22 +1686,22 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
"issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/master"
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
},
- "time": "2020-06-27T14:33:11+00:00"
+ "time": "2021-07-20T11:28:43+00:00"
},
{
"name": "phar-io/version",
- "version": "3.0.4",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/phar-io/version.git",
- "reference": "e4782611070e50613683d2b9a57730e9a3ba5451"
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451",
- "reference": "e4782611070e50613683d2b9a57730e9a3ba5451",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182",
"shasum": ""
},
"require": {
@@ -1833,9 +1737,9 @@
"description": "Library for handling version information and constraints",
"support": {
"issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.0.4"
+ "source": "https://github.com/phar-io/version/tree/3.1.0"
},
- "time": "2020-12-13T23:18:30+00:00"
+ "time": "2021-02-23T14:00:09+00:00"
},
{
"name": "phpbench/container",
@@ -1941,16 +1845,16 @@
},
{
"name": "phpbench/phpbench",
- "version": "1.0.4",
+ "version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/phpbench/phpbench.git",
- "reference": "52cb206677ef235d4f26317a25db8791a64cda12"
+ "reference": "1bb7bec67389121278a1758a593caacdf34ab4d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpbench/phpbench/zipball/52cb206677ef235d4f26317a25db8791a64cda12",
- "reference": "52cb206677ef235d4f26317a25db8791a64cda12",
+ "url": "https://api.github.com/repos/phpbench/phpbench/zipball/1bb7bec67389121278a1758a593caacdf34ab4d3",
+ "reference": "1bb7bec67389121278a1758a593caacdf34ab4d3",
"shasum": ""
},
"require": {
@@ -1975,7 +1879,7 @@
},
"require-dev": {
"dantleech/invoke": "^2.0",
- "friendsofphp/php-cs-fixer": "^2.13.1",
+ "friendsofphp/php-cs-fixer": "^3.0",
"jangregor/phpstan-prophecy": "^0.8.1",
"phpspec/prophecy": "^1.12",
"phpstan/phpstan": "^0.12.7",
@@ -1992,10 +1896,13 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "1.1-dev"
}
},
"autoload": {
+ "files": [
+ "lib/Report/Func/functions.php"
+ ],
"psr-4": {
"PhpBench\\": "lib/",
"PhpBench\\Extensions\\XDebug\\": "extensions/xdebug/lib/",
@@ -2015,7 +1922,7 @@
"description": "PHP Benchmarking Framework",
"support": {
"issues": "https://github.com/phpbench/phpbench/issues",
- "source": "https://github.com/phpbench/phpbench/tree/1.0.4"
+ "source": "https://github.com/phpbench/phpbench/tree/1.1.1"
},
"funding": [
{
@@ -2023,7 +1930,7 @@
"type": "github"
}
],
- "time": "2021-07-18T14:07:54+00:00"
+ "time": "2021-09-08T19:08:37+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -2185,33 +2092,33 @@
},
{
"name": "phpspec/prophecy",
- "version": "1.12.2",
+ "version": "1.14.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "245710e971a030f42e08f4912863805570f23d39"
+ "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39",
- "reference": "245710e971a030f42e08f4912863805570f23d39",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
+ "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.1",
+ "php": "^7.2 || ~8.0, <8.2",
"phpdocumentor/reflection-docblock": "^5.2",
"sebastian/comparator": "^3.0 || ^4.0",
"sebastian/recursion-context": "^3.0 || ^4.0"
},
"require-dev": {
- "phpspec/phpspec": "^6.0",
+ "phpspec/phpspec": "^6.0 || ^7.0",
"phpunit/phpunit": "^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.11.x-dev"
+ "dev-master": "1.x-dev"
}
},
"autoload": {
@@ -2246,9 +2153,9 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/1.12.2"
+ "source": "https://github.com/phpspec/prophecy/tree/1.14.0"
},
- "time": "2020-12-19T10:15:11+00:00"
+ "time": "2021-09-10T09:02:12+00:00"
},
{
"name": "phpspec/prophecy-phpunit",
@@ -2357,16 +2264,16 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.5",
+ "version": "9.2.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
+ "reference": "f6293e1b30a2354e8428e004689671b83871edde"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
- "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde",
+ "reference": "f6293e1b30a2354e8428e004689671b83871edde",
"shasum": ""
},
"require": {
@@ -2422,7 +2329,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6"
},
"funding": [
{
@@ -2430,7 +2337,7 @@
"type": "github"
}
],
- "time": "2020-11-28T06:44:49+00:00"
+ "time": "2021-03-28T07:26:59+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -2675,16 +2582,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.2",
+ "version": "9.5.9",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4"
+ "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f661659747f2f87f9e72095bb207bceb0f151cb4",
- "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b",
+ "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b",
"shasum": ""
},
"require": {
@@ -2696,7 +2603,7 @@
"ext-xml": "*",
"ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.1",
+ "phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
"phpspec/prophecy": "^1.12.1",
@@ -2714,7 +2621,7 @@
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^2.3",
+ "sebastian/type": "^2.3.4",
"sebastian/version": "^3.0.2"
},
"require-dev": {
@@ -2762,7 +2669,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.2"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9"
},
"funding": [
{
@@ -2774,7 +2681,7 @@
"type": "github"
}
],
- "time": "2021-02-02T14:45:58+00:00"
+ "time": "2021-08-31T06:47:40+00:00"
},
{
"name": "psalm/plugin-phpunit",
@@ -2836,6 +2743,55 @@
},
"time": "2021-06-18T23:56:46+00:00"
},
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/master"
+ },
+ "time": "2016-08-06T20:24:11+00:00"
+ },
{
"name": "psr/log",
"version": "1.1.4",
@@ -3392,16 +3348,16 @@
},
{
"name": "sebastian/global-state",
- "version": "5.0.2",
+ "version": "5.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
- "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49",
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49",
"shasum": ""
},
"require": {
@@ -3444,7 +3400,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3"
},
"funding": [
{
@@ -3452,7 +3408,7 @@
"type": "github"
}
],
- "time": "2020-10-26T15:55:19+00:00"
+ "time": "2021-06-11T13:31:12+00:00"
},
{
"name": "sebastian/lines-of-code",
@@ -3744,16 +3700,16 @@
},
{
"name": "sebastian/type",
- "version": "2.3.1",
+ "version": "2.3.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
- "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
"shasum": ""
},
"require": {
@@ -3788,7 +3744,7 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/2.3.1"
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
},
"funding": [
{
@@ -3796,7 +3752,7 @@
"type": "github"
}
],
- "time": "2020-10-26T13:18:59+00:00"
+ "time": "2021-06-15T12:49:02+00:00"
},
{
"name": "sebastian/version",
@@ -4033,16 +3989,16 @@
},
{
"name": "symfony/console",
- "version": "v5.3.2",
+ "version": "v5.3.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1"
+ "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
- "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a",
+ "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a",
"shasum": ""
},
"require": {
@@ -4050,11 +4006,12 @@
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.15",
+ "symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1|^2",
"symfony/string": "^5.1"
},
"conflict": {
+ "psr/log": ">=3",
"symfony/dependency-injection": "<4.4",
"symfony/dotenv": "<5.1",
"symfony/event-dispatcher": "<4.4",
@@ -4062,10 +4019,10 @@
"symfony/process": "<4.4"
},
"provide": {
- "psr/log-implementation": "1.0"
+ "psr/log-implementation": "1.0|2.0"
},
"require-dev": {
- "psr/log": "~1.0",
+ "psr/log": "^1|^2",
"symfony/config": "^4.4|^5.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/event-dispatcher": "^4.4|^5.0",
@@ -4111,7 +4068,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.3.2"
+ "source": "https://github.com/symfony/console/tree/v5.3.7"
},
"funding": [
{
@@ -4127,7 +4084,7 @@
"type": "tidelift"
}
],
- "time": "2021-06-12T09:42:48+00:00"
+ "time": "2021-08-25T20:02:16+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -4198,21 +4155,22 @@
},
{
"name": "symfony/filesystem",
- "version": "v5.3.3",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "19b71c8f313b411172dd5f470fd61f24466d79a9"
+ "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/19b71c8f313b411172dd5f470fd61f24466d79a9",
- "reference": "19b71c8f313b411172dd5f470fd61f24466d79a9",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32",
+ "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8"
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
"autoload": {
@@ -4240,7 +4198,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.3.3"
+ "source": "https://github.com/symfony/filesystem/tree/v5.3.4"
},
"funding": [
{
@@ -4256,24 +4214,25 @@
"type": "tidelift"
}
],
- "time": "2021-06-30T07:27:52+00:00"
+ "time": "2021-07-21T12:40:44+00:00"
},
{
"name": "symfony/finder",
- "version": "v5.3.0",
+ "version": "v5.3.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6"
+ "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
- "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93",
+ "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
"autoload": {
@@ -4301,7 +4260,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.3.0"
+ "source": "https://github.com/symfony/finder/tree/v5.3.7"
},
"funding": [
{
@@ -4317,27 +4276,27 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T12:52:38+00:00"
+ "time": "2021-08-04T21:20:46+00:00"
},
{
"name": "symfony/options-resolver",
- "version": "v5.3.0",
+ "version": "v5.3.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5"
+ "reference": "4b78e55b179003a42523a362cc0e8327f7a69b5e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/162e886ca035869866d233a2bfef70cc28f9bbe5",
- "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4b78e55b179003a42523a362cc0e8327f7a69b5e",
+ "reference": "4b78e55b179003a42523a362cc0e8327f7a69b5e",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-php73": "~1.0",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
"autoload": {
@@ -4370,7 +4329,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v5.3.0"
+ "source": "https://github.com/symfony/options-resolver/tree/v5.3.7"
},
"funding": [
{
@@ -4386,7 +4345,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2021-08-04T21:20:46+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -4469,16 +4428,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.23.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab"
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
"shasum": ""
},
"require": {
@@ -4530,7 +4489,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
},
"funding": [
{
@@ -4546,7 +4505,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:17:38+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
@@ -4634,16 +4593,16 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.23.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1"
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
- "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
"shasum": ""
},
"require": {
@@ -4694,7 +4653,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
},
"funding": [
{
@@ -4710,7 +4669,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:27:20+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-php73",
@@ -4793,16 +4752,16 @@
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.23.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0"
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
"shasum": ""
},
"require": {
@@ -4856,7 +4815,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
},
"funding": [
{
@@ -4872,25 +4831,25 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2021-07-28T13:41:28+00:00"
},
{
"name": "symfony/process",
- "version": "v5.3.2",
+ "version": "v5.3.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "714b47f9196de61a196d86c4bad5f09201b307df"
+ "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/714b47f9196de61a196d86c4bad5f09201b307df",
- "reference": "714b47f9196de61a196d86c4bad5f09201b307df",
+ "url": "https://api.github.com/repos/symfony/process/zipball/38f26c7d6ed535217ea393e05634cb0b244a1967",
+ "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
"autoload": {
@@ -4918,7 +4877,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.3.2"
+ "source": "https://github.com/symfony/process/tree/v5.3.7"
},
"funding": [
{
@@ -4934,7 +4893,7 @@
"type": "tidelift"
}
],
- "time": "2021-06-12T10:15:01+00:00"
+ "time": "2021-08-04T21:20:46+00:00"
},
{
"name": "symfony/service-contracts",
@@ -5017,16 +4976,16 @@
},
{
"name": "symfony/string",
- "version": "v5.3.3",
+ "version": "v5.3.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1"
+ "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
- "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
+ "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5",
+ "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5",
"shasum": ""
},
"require": {
@@ -5080,7 +5039,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.3.3"
+ "source": "https://github.com/symfony/string/tree/v5.3.7"
},
"funding": [
{
@@ -5096,20 +5055,20 @@
"type": "tidelift"
}
],
- "time": "2021-06-27T11:44:38+00:00"
+ "time": "2021-08-26T08:00:08+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"shasum": ""
},
"require": {
@@ -5138,7 +5097,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/master"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
},
"funding": [
{
@@ -5146,20 +5105,20 @@
"type": "github"
}
],
- "time": "2020-07-12T23:59:07+00:00"
+ "time": "2021-07-28T10:34:58+00:00"
},
{
"name": "vimeo/psalm",
- "version": "4.8.1",
+ "version": "4.10.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "f73f2299dbc59a3e6c4d66cff4605176e728ee69"
+ "reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/f73f2299dbc59a3e6c4d66cff4605176e728ee69",
- "reference": "f73f2299dbc59a3e6c4d66cff4605176e728ee69",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/916b098b008f6de4543892b1e0651c1c3b92cbfa",
+ "reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa",
"shasum": ""
},
"require": {
@@ -5169,6 +5128,7 @@
"composer/semver": "^1.4 || ^2.0 || ^3.0",
"composer/xdebug-handler": "^1.1 || ^2.0",
"dnoegel/php-xdg-base-dir": "^0.1.1",
+ "ext-ctype": "*",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
@@ -5178,7 +5138,7 @@
"felixfbecker/advanced-json-rpc": "^3.0.3",
"felixfbecker/language-server-protocol": "^1.5",
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "nikic/php-parser": "^4.10.5",
+ "nikic/php-parser": "^4.12",
"openlss/lib-array2xml": "^1.0",
"php": "^7.1|^8",
"sebastian/diff": "^3.0 || ^4.0",
@@ -5201,7 +5161,6 @@
"slevomat/coding-standard": "^7.0",
"squizlabs/php_codesniffer": "^3.5",
"symfony/process": "^4.3 || ^5.0",
- "weirdan/phpunit-appveyor-reporter": "^1.0.0",
"weirdan/prophecy-shim": "^1.0 || ^2.0"
},
"suggest": {
@@ -5249,9 +5208,9 @@
],
"support": {
"issues": "https://github.com/vimeo/psalm/issues",
- "source": "https://github.com/vimeo/psalm/tree/4.8.1"
+ "source": "https://github.com/vimeo/psalm/tree/4.10.0"
},
- "time": "2021-06-20T23:03:20+00:00"
+ "time": "2021-09-04T21:00:09+00:00"
},
{
"name": "webimpress/coding-standard",
@@ -5308,6 +5267,65 @@
],
"time": "2021-04-12T12:51:27+00:00"
},
+ {
+ "name": "webimpress/safe-writer",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webimpress/safe-writer.git",
+ "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6",
+ "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5.4",
+ "vimeo/psalm": "^4.7",
+ "webimpress/coding-standard": "^1.2.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev",
+ "dev-develop": "2.3.x-dev",
+ "dev-release-1.0": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webimpress\\SafeWriter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "description": "Tool to write files safely, to avoid race conditions",
+ "keywords": [
+ "concurrent write",
+ "file writer",
+ "race condition",
+ "safe writer",
+ "webimpress"
+ ],
+ "support": {
+ "issues": "https://github.com/webimpress/safe-writer/issues",
+ "source": "https://github.com/webimpress/safe-writer/tree/2.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/michalbundyra",
+ "type": "github"
+ }
+ ],
+ "time": "2021-04-19T16:34:45+00:00"
+ },
{
"name": "webmozart/assert",
"version": "1.10.0",
@@ -5419,11 +5437,13 @@
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": [],
+ "stability-flags": {
+ "mikey179/vfsstream": 15
+ },
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^7.3 || ~8.0.0"
+ "php": "~7.4.0 || ~8.0.0 || ~8.1.0"
},
"platform-dev": [],
"plugin-api-version": "2.1.0"
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index 4f817882..a8083863 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -16,6 +16,7 @@
bin
src
test
+ test/TestAsset/laminas-code/*.php
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
index 52dfbfeb..348537dc 100644
--- a/psalm-baseline.xml
+++ b/psalm-baseline.xml
@@ -1,5 +1,5 @@
-
+
new $requestedName(...$arguments)
@@ -242,10 +242,6 @@
$creationCallback($this->creationContext, $name, $creationCallback, $options)
-
- $factory
- callable
-
$name
$name
@@ -941,6 +937,8 @@
$plugin
+
+
$aliases
$factories
diff --git a/psalm.xml.dist b/psalm.xml.dist
index d772ea13..7b2015cc 100644
--- a/psalm.xml.dist
+++ b/psalm.xml.dist
@@ -12,6 +12,7 @@
+
diff --git a/src/Proxy/LazyServiceFactory.php b/src/Proxy/LazyServiceFactory.php
index 9e06b1bd..eab13dcd 100644
--- a/src/Proxy/LazyServiceFactory.php
+++ b/src/Proxy/LazyServiceFactory.php
@@ -24,12 +24,12 @@ final class LazyServiceFactory implements DelegatorFactoryInterface
/** @var LazyLoadingValueHolderFactory */
private $proxyFactory;
- /** @var string[] map of service names to class names */
+ /** @var array map of service names to class names */
private $servicesMap;
/**
- * @param string[] $servicesMap a map of service names to class names of their
- * respective classes
+ * @param array $servicesMap A map of service names to
+ * class names of their respective classes
*/
public function __construct(LazyLoadingValueHolderFactory $proxyFactory, array $servicesMap)
{
@@ -40,6 +40,7 @@ public function __construct(LazyLoadingValueHolderFactory $proxyFactory, array $
/**
* {@inheritDoc}
*
+ * @param string $name
* @return VirtualProxyInterface
*/
public function __invoke(ContainerInterface $container, $name, callable $callback, ?array $options = null)
diff --git a/test/Proxy/LazyServiceFactoryTest.php b/test/Proxy/LazyServiceFactoryTest.php
index 8b4bc4cc..9f86c473 100644
--- a/test/Proxy/LazyServiceFactoryTest.php
+++ b/test/Proxy/LazyServiceFactoryTest.php
@@ -36,6 +36,7 @@ protected function setUp(): void
'fooService' => 'FooClass',
];
+ /** @psalm-suppress ArgumentTypeCoercion */
$this->factory = new LazyServiceFactory($this->proxyFactory, $servicesMap);
}
diff --git a/test/TestAsset/laminas-code/ClassReflection.php b/test/TestAsset/laminas-code/ClassReflection.php
new file mode 100644
index 00000000..7ad47694
--- /dev/null
+++ b/test/TestAsset/laminas-code/ClassReflection.php
@@ -0,0 +1,231 @@
+docBlock)) {
+ return $this->docBlock;
+ }
+
+ if ('' == $this->getDocComment()) {
+ return false;
+ }
+
+ $this->docBlock = new DocBlockReflection($this);
+
+ return $this->docBlock;
+ }
+
+ /**
+ * Return the start line of the class
+ *
+ * @param bool $includeDocComment
+ * @return int
+ */
+ #[ReturnTypeWillChange]
+ public function getStartLine($includeDocComment = false)
+ {
+ if ($includeDocComment && $this->getDocComment() != '') {
+ return $this->getDocBlock()->getStartLine();
+ }
+
+ return parent::getStartLine();
+ }
+
+ /**
+ * Return the contents of the class
+ *
+ * @param bool $includeDocBlock
+ * @return string
+ */
+ public function getContents($includeDocBlock = true)
+ {
+ $fileName = $this->getFileName();
+
+ if (false === $fileName || ! file_exists($fileName)) {
+ return '';
+ }
+
+ $filelines = file($fileName);
+ $startnum = $this->getStartLine($includeDocBlock);
+ $endnum = $this->getEndLine() - $this->getStartLine();
+
+ // Ensure we get between the open and close braces
+ $lines = array_slice($filelines, $startnum, $endnum);
+ array_unshift($lines, $filelines[$startnum - 1]);
+
+ return strstr(implode('', $lines), '{');
+ }
+
+ /**
+ * Get all reflection objects of implemented interfaces
+ *
+ * @return ClassReflection[]
+ */
+ #[ReturnTypeWillChange]
+ public function getInterfaces()
+ {
+ $phpReflections = parent::getInterfaces();
+ $laminasReflections = [];
+ while ($phpReflections && ($phpReflection = array_shift($phpReflections))) {
+ $instance = new ClassReflection($phpReflection->getName());
+ $laminasReflections[] = $instance;
+ unset($phpReflection);
+ }
+ unset($phpReflections);
+
+ return $laminasReflections;
+ }
+
+ /**
+ * Return method reflection by name
+ *
+ * @param string $name
+ * @return MethodReflection
+ */
+ #[ReturnTypeWillChange]
+ public function getMethod($name)
+ {
+ return new MethodReflection($this->getName(), parent::getMethod($name)->getName());
+ }
+
+ /**
+ * Get reflection objects of all methods
+ *
+ * @param int $filter
+ * @return MethodReflection[]
+ */
+ #[ReturnTypeWillChange]
+ public function getMethods($filter = -1)
+ {
+ $methods = [];
+ foreach (parent::getMethods($filter) as $method) {
+ $instance = new MethodReflection($this->getName(), $method->getName());
+ $methods[] = $instance;
+ }
+
+ return $methods;
+ }
+
+ /**
+ * Returns an array of reflection classes of traits used by this class.
+ *
+ * @return null|array
+ */
+ #[ReturnTypeWillChange]
+ public function getTraits()
+ {
+ $vals = [];
+ $traits = parent::getTraits();
+ if ($traits === null) {
+ return;
+ }
+
+ foreach ($traits as $trait) {
+ $vals[] = new ClassReflection($trait->getName());
+ }
+
+ return $vals;
+ }
+
+ /**
+ * Get parent reflection class of reflected class
+ *
+ * @return ClassReflection|bool
+ */
+ #[ReturnTypeWillChange]
+ public function getParentClass()
+ {
+ $phpReflection = parent::getParentClass();
+ if ($phpReflection) {
+ $laminasReflection = new ClassReflection($phpReflection->getName());
+ unset($phpReflection);
+
+ return $laminasReflection;
+ }
+
+ return false;
+ }
+
+ /**
+ * Return reflection property of this class by name
+ *
+ * @param string $name
+ * @return PropertyReflection
+ */
+ #[ReturnTypeWillChange]
+ public function getProperty($name)
+ {
+ $phpReflection = parent::getProperty($name);
+ $laminasReflection = new PropertyReflection($this->getName(), $phpReflection->getName());
+ unset($phpReflection);
+
+ return $laminasReflection;
+ }
+
+ /**
+ * Return reflection properties of this class
+ *
+ * @param int $filter
+ * @return PropertyReflection[]
+ */
+ #[ReturnTypeWillChange]
+ public function getProperties($filter = -1)
+ {
+ $phpReflections = parent::getProperties($filter);
+ $laminasReflections = [];
+ while ($phpReflections && ($phpReflection = array_shift($phpReflections))) {
+ $instance = new PropertyReflection($this->getName(), $phpReflection->getName());
+ $laminasReflections[] = $instance;
+ unset($phpReflection);
+ }
+ unset($phpReflections);
+
+ return $laminasReflections;
+ }
+
+ /**
+ * @return string
+ */
+ public function toString()
+ {
+ return parent::__toString();
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ return parent::__toString();
+ }
+}
diff --git a/test/TestAsset/laminas-code/MethodReflection.php b/test/TestAsset/laminas-code/MethodReflection.php
new file mode 100644
index 00000000..65d7fa50
--- /dev/null
+++ b/test/TestAsset/laminas-code/MethodReflection.php
@@ -0,0 +1,466 @@
+getDocComment()) {
+ return false;
+ }
+
+ return new DocBlockReflection($this);
+ }
+
+ /**
+ * Get start line (position) of method
+ *
+ * @param bool $includeDocComment
+ * @return int
+ */
+ #[ReturnTypeWillChange]
+ public function getStartLine($includeDocComment = false)
+ {
+ if ($includeDocComment) {
+ if ($this->getDocComment() != '') {
+ return $this->getDocBlock()->getStartLine();
+ }
+ }
+
+ return parent::getStartLine();
+ }
+
+ /**
+ * Get reflection of declaring class
+ *
+ * @return ClassReflection
+ */
+ #[ReturnTypeWillChange]
+ public function getDeclaringClass()
+ {
+ $phpReflection = parent::getDeclaringClass();
+ $laminasReflection = new ClassReflection($phpReflection->getName());
+ unset($phpReflection);
+
+ return $laminasReflection;
+ }
+
+ /**
+ * Get method prototype
+ *
+ * @param string $format
+ * @return array|string
+ */
+ #[ReturnTypeWillChange]
+ public function getPrototype($format = self::PROTOTYPE_AS_ARRAY)
+ {
+ $returnType = 'mixed';
+ $docBlock = $this->getDocBlock();
+ if ($docBlock) {
+ $return = $docBlock->getTag('return');
+ $returnTypes = $return->getTypes();
+ $returnType = count($returnTypes) > 1 ? implode('|', $returnTypes) : $returnTypes[0];
+ }
+
+ $declaringClass = $this->getDeclaringClass();
+ $prototype = [
+ 'namespace' => $declaringClass->getNamespaceName(),
+ 'class' => substr($declaringClass->getName(), strlen($declaringClass->getNamespaceName()) + 1),
+ 'name' => $this->getName(),
+ 'visibility' => $this->isPublic() ? 'public' : ($this->isPrivate() ? 'private' : 'protected'),
+ 'return' => $returnType,
+ 'arguments' => [],
+ ];
+
+ $parameters = $this->getParameters();
+ foreach ($parameters as $parameter) {
+ $prototype['arguments'][$parameter->getName()] = [
+ 'type' => $parameter->detectType(),
+ 'required' => ! $parameter->isOptional(),
+ 'by_ref' => $parameter->isPassedByReference(),
+ 'default' => $parameter->isDefaultValueAvailable() ? $parameter->getDefaultValue() : null,
+ ];
+ }
+
+ if ($format == self::PROTOTYPE_AS_STRING) {
+ $line = $prototype['visibility'] . ' ' . $prototype['return'] . ' ' . $prototype['name'] . '(';
+ $args = [];
+ foreach ($prototype['arguments'] as $name => $argument) {
+ $argsLine = ($argument['type'] ?
+ $argument['type'] . ' '
+ : '') . ($argument['by_ref'] ? '&' : '') . '$' . $name;
+ if (! $argument['required']) {
+ $argsLine .= ' = ' . var_export($argument['default'], true);
+ }
+ $args[] = $argsLine;
+ }
+ $line .= implode(', ', $args);
+ $line .= ')';
+
+ return $line;
+ }
+
+ return $prototype;
+ }
+
+ /**
+ * Get all method parameter reflection objects
+ *
+ * @return ParameterReflection[]
+ */
+ #[ReturnTypeWillChange]
+ public function getParameters()
+ {
+ $phpReflections = parent::getParameters();
+ $laminasReflections = [];
+ while ($phpReflections && ($phpReflection = array_shift($phpReflections))) {
+ $instance = new ParameterReflection(
+ [$this->getDeclaringClass()->getName(), $this->getName()],
+ $phpReflection->getName()
+ );
+ $laminasReflections[] = $instance;
+ unset($phpReflection);
+ }
+ unset($phpReflections);
+
+ return $laminasReflections;
+ }
+
+ /**
+ * Get method contents
+ *
+ * @param bool $includeDocBlock
+ * @return string
+ */
+ public function getContents($includeDocBlock = true)
+ {
+ $docComment = $this->getDocComment();
+ $content = $includeDocBlock && ! empty($docComment) ? $docComment . "\n" : '';
+ $content .= $this->extractMethodContents();
+
+ return $content;
+ }
+
+ /**
+ * Get method body
+ *
+ * @return string
+ */
+ public function getBody()
+ {
+ return $this->extractMethodContents(true);
+ }
+
+ /**
+ * Tokenize method string and return concatenated body
+ *
+ * @param bool $bodyOnly
+ * @return string
+ */
+ protected function extractMethodContents($bodyOnly = false)
+ {
+ $fileName = $this->getFileName();
+
+ if ((class_exists($this->class) && false === $fileName) || ! file_exists($fileName)) {
+ return '';
+ }
+
+ $lines = array_slice(
+ file($fileName, FILE_IGNORE_NEW_LINES),
+ $this->getStartLine() - 1,
+ $this->getEndLine() - ($this->getStartLine() - 1),
+ true
+ );
+
+ $functionLine = implode("\n", $lines);
+ $tokens = token_get_all(' $token) {
+ $tokenType = is_array($token) ? token_name($token[0]) : $token;
+ $tokenValue = is_array($token) ? $token[1] : $token;
+
+ switch ($tokenType) {
+ case 'T_FINAL':
+ case 'T_ABSTRACT':
+ case 'T_PUBLIC':
+ case 'T_PROTECTED':
+ case 'T_PRIVATE':
+ case 'T_STATIC':
+ case 'T_FUNCTION':
+ // check to see if we have a valid function
+ // then check if we are inside function and have a closure
+ if ($this->isValidFunction($tokens, $key, $this->getName())) {
+ if ($bodyOnly === false) {
+ //if first instance of tokenType grab prefixed whitespace
+ //and append to body
+ if ($capture === false) {
+ $body .= $this->extractPrefixedWhitespace($tokens, $key);
+ }
+ $body .= $tokenValue;
+ }
+
+ $capture = true;
+ } else {
+ //closure test
+ if ($firstBrace && $tokenType == 'T_FUNCTION') {
+ $body .= $tokenValue;
+ break;
+ }
+ $capture = false;
+ break;
+ }
+ break;
+
+ case '{':
+ if ($capture === false) {
+ break;
+ }
+
+ if ($firstBrace === false) {
+ $firstBrace = true;
+ if ($bodyOnly === true) {
+ break;
+ }
+ }
+
+ $body .= $tokenValue;
+ break;
+
+ case '}':
+ if ($capture === false) {
+ break;
+ }
+
+ //check to see if this is the last brace
+ if ($this->isEndingBrace($tokens, $key)) {
+ //capture the end brace if not bodyOnly
+ if ($bodyOnly === false) {
+ $body .= $tokenValue;
+ }
+
+ break 2;
+ }
+
+ $body .= $tokenValue;
+ break;
+
+ default:
+ if ($capture === false) {
+ break;
+ }
+
+ // if returning body only wait for first brace before capturing
+ if ($bodyOnly === true && $firstBrace !== true) {
+ break;
+ }
+
+ $body .= $tokenValue;
+ break;
+ }
+ }
+
+ //remove ending whitespace and return
+ return rtrim($body);
+ }
+
+ /**
+ * Take current position and find any whitespace
+ *
+ * @param array $haystack
+ * @param int $position
+ * @return string
+ */
+ protected function extractPrefixedWhitespace($haystack, $position)
+ {
+ $content = '';
+ $count = count($haystack);
+ if ($position + 1 == $count) {
+ return $content;
+ }
+
+ for ($i = $position - 1; $i >= 0; $i--) {
+ $tokenType = is_array($haystack[$i]) ? token_name($haystack[$i][0]) : $haystack[$i];
+ $tokenValue = is_array($haystack[$i]) ? $haystack[$i][1] : $haystack[$i];
+
+ //search only for whitespace
+ if ($tokenType == 'T_WHITESPACE') {
+ $content .= $tokenValue;
+ } else {
+ break;
+ }
+ }
+
+ return $content;
+ }
+
+ /**
+ * Test for ending brace
+ *
+ * @param array $haystack
+ * @param int $position
+ * @return bool
+ */
+ protected function isEndingBrace($haystack, $position)
+ {
+ $count = count($haystack);
+
+ //advance one position
+ $position += 1;
+
+ if ($position == $count) {
+ return true;
+ }
+
+ for ($i = $position; $i < $count; $i++) {
+ $tokenType = is_array($haystack[$i]) ? token_name($haystack[$i][0]) : $haystack[$i];
+ switch ($tokenType) {
+ case 'T_FINAL':
+ case 'T_ABSTRACT':
+ case 'T_PUBLIC':
+ case 'T_PROTECTED':
+ case 'T_PRIVATE':
+ case 'T_STATIC':
+ return true;
+
+ case 'T_FUNCTION':
+ // If a function is encountered and that function is not a closure
+ // then return true. otherwise the function is a closure, return false
+ if ($this->isValidFunction($haystack, $i)) {
+ return true;
+ }
+ return false;
+
+ case '}':
+ case ';':
+ case 'T_BREAK':
+ case 'T_CATCH':
+ case 'T_DO':
+ case 'T_ECHO':
+ case 'T_ELSE':
+ case 'T_ELSEIF':
+ case 'T_EVAL':
+ case 'T_EXIT':
+ case 'T_FINALLY':
+ case 'T_FOR':
+ case 'T_FOREACH':
+ case 'T_GOTO':
+ case 'T_IF':
+ case 'T_INCLUDE':
+ case 'T_INCLUDE_ONCE':
+ case 'T_PRINT':
+ case 'T_STRING':
+ case 'T_STRING_VARNAME':
+ case 'T_THROW':
+ case 'T_USE':
+ case 'T_VARIABLE':
+ case 'T_WHILE':
+ case 'T_YIELD':
+ return false;
+ }
+ }
+ }
+
+ /**
+ * Test to see if current position is valid function or
+ * closure. Returns true if it's a function and NOT a closure
+ *
+ * @param array $haystack
+ * @param int $position
+ * @param string $functionName
+ * @return bool
+ */
+ protected function isValidFunction($haystack, $position, $functionName = null)
+ {
+ $isValid = false;
+ $count = count($haystack);
+ for ($i = $position + 1; $i < $count; $i++) {
+ $tokenType = is_array($haystack[$i]) ? token_name($haystack[$i][0]) : $haystack[$i];
+ $tokenValue = is_array($haystack[$i]) ? $haystack[$i][1] : $haystack[$i];
+
+ //check for occurrence of ( or
+ if ($tokenType == 'T_STRING') {
+ //check to see if function name is passed, if so validate against that
+ if ($functionName !== null && $tokenValue != $functionName) {
+ $isValid = false;
+ break;
+ }
+
+ $isValid = true;
+ break;
+ } elseif ($tokenValue == '(') {
+ break;
+ }
+ }
+
+ return $isValid;
+ }
+
+ /**
+ * @return string
+ */
+ public function toString()
+ {
+ return parent::__toString();
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ return parent::__toString();
+ }
+}
diff --git a/test/TestAsset/laminas-code/ParameterReflection.php b/test/TestAsset/laminas-code/ParameterReflection.php
new file mode 100644
index 00000000..d1ba559d
--- /dev/null
+++ b/test/TestAsset/laminas-code/ParameterReflection.php
@@ -0,0 +1,129 @@
+getName());
+ unset($phpReflection);
+
+ return $laminasReflection;
+ }
+
+ /**
+ * Get class reflection object
+ *
+ * @return null|ClassReflection
+ */
+ #[ReturnTypeWillChange]
+ public function getClass()
+ {
+ $phpReflectionType = parent::getType();
+ if ($phpReflectionType === null) {
+ return null;
+ }
+
+ $laminasReflection = new ClassReflection($phpReflectionType->getName());
+ unset($phpReflectionType);
+
+ return $laminasReflection;
+ }
+
+ /**
+ * Get declaring function reflection object
+ *
+ * @return FunctionReflection|MethodReflection
+ */
+ #[ReturnTypeWillChange]
+ public function getDeclaringFunction()
+ {
+ $phpReflection = parent::getDeclaringFunction();
+ if ($phpReflection instanceof ReflectionMethod) {
+ $laminasReflection = new MethodReflection($this->getDeclaringClass()->getName(), $phpReflection->getName());
+ } else {
+ $laminasReflection = new FunctionReflection($phpReflection->getName());
+ }
+ unset($phpReflection);
+
+ return $laminasReflection;
+ }
+
+ /**
+ * Get parameter type
+ *
+ * @return string|null
+ */
+ public function detectType()
+ {
+ if (
+ method_exists($this, 'getType')
+ && null !== ($type = $this->getType())
+ && $type->isBuiltin()
+ ) {
+ return $type->getName();
+ }
+
+ if (null !== $type && $type->getName() === 'self') {
+ return $this->getDeclaringClass()->getName();
+ }
+
+ if (($class = $this->getClass()) instanceof ReflectionClass) {
+ return $class->getName();
+ }
+
+ $docBlock = $this->getDeclaringFunction()->getDocBlock();
+
+ if (! $docBlock instanceof DocBlockReflection) {
+ return null;
+ }
+
+ $params = $docBlock->getTags('param');
+
+ if (isset($params[$this->getPosition()])) {
+ return $params[$this->getPosition()]->getType();
+ }
+
+ return null;
+ }
+
+ /**
+ * @return string
+ */
+ public function toString()
+ {
+ return parent::__toString();
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ return parent::__toString();
+ }
+}
diff --git a/test/autoload.php b/test/autoload.php
new file mode 100644
index 00000000..8e5af1e3
--- /dev/null
+++ b/test/autoload.php
@@ -0,0 +1,7 @@
+= 80100) {
+ require __DIR__ . '/TestAsset/laminas-code/ParameterReflection.php';
+ require __DIR__ . '/TestAsset/laminas-code/MethodReflection.php';
+ require __DIR__ . '/TestAsset/laminas-code/ClassReflection.php';
+}