diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index 9e5ea6a..ff02eb2 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -26,7 +26,6 @@ jobs:
- name: Setup Environment
run: |
- rm composer.lock
npm run setup
- name: Test
diff --git a/composer.json b/composer.json
index aa09726..e14c39b 100644
--- a/composer.json
+++ b/composer.json
@@ -19,10 +19,16 @@
"support" : {
"issues": "https://github.com/WordPress/phpdoc-parser/issues"
},
+ "repositories": [
+ {
+ "type": "path",
+ "url": "./vendor-packages/phpdocumentor-reflection"
+ }
+ ],
"require" : {
- "php" : ">=5.4",
+ "php" : ">=7.4",
"composer/installers" : "~1.0",
- "phpdocumentor/reflection" : "~3.0",
+ "phpdocumentor/reflection" : "dev-main",
"erusev/parsedown" : "~1.7",
"scribu/lib-posts-to-posts": "dev-master@dev",
"scribu/scb-framework" : "dev-master@dev",
@@ -47,6 +53,9 @@
"composer/installers": true
},
"_process-timeout-comment": "Work around `test:watch` timeout, see https://github.com/spatie/phpunit-watcher/issues/63#issuecomment-545633709",
- "process-timeout": 0
+ "process-timeout": 0,
+ "audit": {
+ "block-insecure": false
+ }
}
}
diff --git a/composer.lock b/composer.lock
index 55aea9d..9ce4be7 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": "96d200642f6aded313abd6eb270909ee",
+ "content-hash": "f897d027545bb5e330e6fc3f18faa8aa",
"packages": [
{
"name": "composer/installers",
@@ -209,32 +209,38 @@
},
{
"name": "nikic/php-parser",
- "version": "v1.4.1",
+ "version": "v3.1.5",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51"
+ "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51",
- "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
+ "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
- "php": ">=5.3"
+ "php": ">=5.5"
},
+ "require-dev": {
+ "phpunit/phpunit": "~4.0|~5.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "files": [
- "lib/bootstrap.php"
- ]
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -252,26 +258,20 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/1.x"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v3.1.5"
},
- "time": "2015-09-19T14:15:08+00:00"
+ "time": "2018-02-28T20:30:58+00:00"
},
{
"name": "phpdocumentor/reflection",
- "version": "3.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/Reflection.git",
- "reference": "793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d"
- },
+ "version": "dev-main",
"dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d",
- "reference": "793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d",
- "shasum": ""
+ "type": "path",
+ "url": "./vendor-packages/phpdocumentor-reflection",
+ "reference": "8afce995548887021832810cf966f131eab3501e"
},
"require": {
- "nikic/php-parser": "^1.0",
+ "nikic/php-parser": "^3.0",
"php": ">=5.3.3",
"phpdocumentor/reflection-docblock": "~2.0",
"psr/log": "~1.0"
@@ -284,7 +284,8 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.0.x-dev",
+ "dev-wp": "v3.0.2-dmsnell"
}
},
"autoload": {
@@ -296,7 +297,6 @@
]
}
},
- "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
@@ -308,11 +308,9 @@
"reflection",
"static analysis"
],
- "support": {
- "issues": "https://github.com/phpDocumentor/Reflection/issues",
- "source": "https://github.com/phpDocumentor/Reflection/tree/master"
- },
- "time": "2016-05-21T08:42:32+00:00"
+ "transport-options": {
+ "relative": true
+ }
},
{
"name": "phpdocumentor/reflection-docblock",
@@ -579,25 +577,25 @@
},
{
"name": "clue/term-react",
- "version": "v1.3.0",
+ "version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/clue/reactphp-term.git",
- "reference": "eb6eb063eda04a714ef89f066586a2c49588f7ca"
+ "reference": "00f297dc597eaee2ebf98af8f27cca5d21d60fa3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/clue/reactphp-term/zipball/eb6eb063eda04a714ef89f066586a2c49588f7ca",
- "reference": "eb6eb063eda04a714ef89f066586a2c49588f7ca",
+ "url": "https://api.github.com/repos/clue/reactphp-term/zipball/00f297dc597eaee2ebf98af8f27cca5d21d60fa3",
+ "reference": "00f297dc597eaee2ebf98af8f27cca5d21d60fa3",
"shasum": ""
},
"require": {
"php": ">=5.3",
- "react/stream": "^1.0 || ^0.7"
+ "react/stream": "^1.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8",
- "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3"
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36",
+ "react/event-loop": "^1.2"
},
"type": "library",
"autoload": {
@@ -636,7 +634,7 @@
],
"support": {
"issues": "https://github.com/clue/reactphp-term/issues",
- "source": "https://github.com/clue/reactphp-term/tree/v1.3.0"
+ "source": "https://github.com/clue/reactphp-term/tree/v1.4.0"
},
"funding": [
{
@@ -648,20 +646,20 @@
"type": "github"
}
],
- "time": "2020-11-06T11:50:12+00:00"
+ "time": "2024-01-30T10:22:09+00:00"
},
{
"name": "clue/utf8-react",
- "version": "v1.2.0",
+ "version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/clue/reactphp-utf8.git",
- "reference": "8bc3f8c874cdf642c8f10f9ae93aadb8cd63da96"
+ "reference": "d5cd04d39cb5457aa5df830b7c4b301d2694217e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/clue/reactphp-utf8/zipball/8bc3f8c874cdf642c8f10f9ae93aadb8cd63da96",
- "reference": "8bc3f8c874cdf642c8f10f9ae93aadb8cd63da96",
+ "url": "https://api.github.com/repos/clue/reactphp-utf8/zipball/d5cd04d39cb5457aa5df830b7c4b301d2694217e",
+ "reference": "d5cd04d39cb5457aa5df830b7c4b301d2694217e",
"shasum": ""
},
"require": {
@@ -669,7 +667,7 @@
"react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4 || ^0.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.3 ||^5.7 || ^4.8",
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36",
"react/stream": "^1.0 || ^0.7"
},
"type": "library",
@@ -699,7 +697,7 @@
],
"support": {
"issues": "https://github.com/clue/reactphp-utf8/issues",
- "source": "https://github.com/clue/reactphp-utf8/tree/v1.2.0"
+ "source": "https://github.com/clue/reactphp-utf8/tree/v1.3.0"
},
"funding": [
{
@@ -711,34 +709,34 @@
"type": "github"
}
],
- "time": "2020-11-06T11:48:09+00:00"
+ "time": "2023-12-06T14:52:17+00:00"
},
{
"name": "doctrine/instantiator",
- "version": "1.4.1",
+ "version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
+ "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
- "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
+ "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^9",
+ "doctrine/coding-standard": "^9 || ^11",
"ext-pdo": "*",
"ext-phar": "*",
"phpbench/phpbench": "^0.16 || ^1",
"phpstan/phpstan": "^1.4",
"phpstan/phpstan-phpunit": "^1",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "vimeo/psalm": "^4.22"
+ "vimeo/psalm": "^4.30 || ^5.4"
},
"type": "library",
"autoload": {
@@ -765,7 +763,7 @@
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.4.1"
+ "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
},
"funding": [
{
@@ -781,32 +779,32 @@
"type": "tidelift"
}
],
- "time": "2022-03-03T08:28:38+00:00"
+ "time": "2022-12-30T00:15:36+00:00"
},
{
"name": "evenement/evenement",
- "version": "v3.0.1",
+ "version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/igorw/evenement.git",
- "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
+ "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
- "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
+ "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc",
+ "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "^9 || ^6"
},
"type": "library",
"autoload": {
- "psr-0": {
- "Evenement": "src"
+ "psr-4": {
+ "Evenement\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -826,9 +824,9 @@
],
"support": {
"issues": "https://github.com/igorw/evenement/issues",
- "source": "https://github.com/igorw/evenement/tree/master"
+ "source": "https://github.com/igorw/evenement/tree/v3.0.2"
},
- "time": "2017-07-23T21:35:13+00:00"
+ "time": "2023-08-08T05:53:35+00:00"
},
{
"name": "jolicode/jolinotif",
@@ -894,16 +892,16 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.11.0",
+ "version": "1.13.4",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+ "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
- "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
+ "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
"shasum": ""
},
"require": {
@@ -911,11 +909,12 @@
},
"conflict": {
"doctrine/collections": "<1.6.8",
- "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ "doctrine/common": "<2.13.3 || >=3 <3.2.2"
},
"require-dev": {
"doctrine/collections": "^1.6.8",
"doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpspec/prophecy": "^1.10",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
@@ -941,7 +940,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
},
"funding": [
{
@@ -949,7 +948,7 @@
"type": "tidelift"
}
],
- "time": "2022-03-03T13:19:32+00:00"
+ "time": "2025-08-01T08:46:24+00:00"
},
{
"name": "phar-io/manifest",
@@ -1197,16 +1196,16 @@
},
{
"name": "phpunit/php-file-iterator",
- "version": "2.0.5",
+ "version": "2.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5"
+ "reference": "69deeb8664f611f156a924154985fbd4911eb36b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5",
- "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/69deeb8664f611f156a924154985fbd4911eb36b",
+ "reference": "69deeb8664f611f156a924154985fbd4911eb36b",
"shasum": ""
},
"require": {
@@ -1245,7 +1244,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.6"
},
"funding": [
{
@@ -1253,7 +1252,7 @@
"type": "github"
}
],
- "time": "2021-12-02T12:42:26+00:00"
+ "time": "2024-03-01T13:39:50+00:00"
},
{
"name": "phpunit/php-text-template",
@@ -1302,16 +1301,16 @@
},
{
"name": "phpunit/php-timer",
- "version": "2.1.3",
+ "version": "2.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662"
+ "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662",
- "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a691211e94ff39a34811abd521c31bd5b305b0bb",
+ "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb",
"shasum": ""
},
"require": {
@@ -1349,7 +1348,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3"
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.4"
},
"funding": [
{
@@ -1357,7 +1356,7 @@
"type": "github"
}
],
- "time": "2020-11-30T08:20:02+00:00"
+ "time": "2024-03-01T13:42:41+00:00"
},
{
"name": "phpunit/php-token-stream",
@@ -1557,33 +1556,31 @@
},
{
"name": "react/event-loop",
- "version": "v1.3.0",
+ "version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/event-loop.git",
- "reference": "187fb56f46d424afb6ec4ad089269c72eec2e137"
+ "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/event-loop/zipball/187fb56f46d424afb6ec4ad089269c72eec2e137",
- "reference": "187fb56f46d424afb6ec4ad089269c72eec2e137",
+ "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a",
+ "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36"
},
"suggest": {
- "ext-event": "~1.0 for ExtEventLoop",
- "ext-pcntl": "For signal handling support when using the StreamSelectLoop",
- "ext-uv": "* for ExtUvLoop"
+ "ext-pcntl": "For signal handling support when using the StreamSelectLoop"
},
"type": "library",
"autoload": {
"psr-4": {
- "React\\EventLoop\\": "src"
+ "React\\EventLoop\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1619,32 +1616,28 @@
],
"support": {
"issues": "https://github.com/reactphp/event-loop/issues",
- "source": "https://github.com/reactphp/event-loop/tree/v1.3.0"
+ "source": "https://github.com/reactphp/event-loop/tree/v1.6.0"
},
"funding": [
{
- "url": "https://github.com/WyriHaximus",
- "type": "github"
- },
- {
- "url": "https://github.com/clue",
- "type": "github"
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
}
],
- "time": "2022-03-17T11:10:22+00:00"
+ "time": "2025-11-17T20:46:25+00:00"
},
{
"name": "react/stream",
- "version": "v1.2.0",
+ "version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/stream.git",
- "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9"
+ "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/stream/zipball/7a423506ee1903e89f1e08ec5f0ed430ff784ae9",
- "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9",
+ "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d",
+ "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d",
"shasum": ""
},
"require": {
@@ -1654,12 +1647,12 @@
},
"require-dev": {
"clue/stream-filter": "~1.2",
- "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36"
},
"type": "library",
"autoload": {
"psr-4": {
- "React\\Stream\\": "src"
+ "React\\Stream\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1701,32 +1694,28 @@
],
"support": {
"issues": "https://github.com/reactphp/stream/issues",
- "source": "https://github.com/reactphp/stream/tree/v1.2.0"
+ "source": "https://github.com/reactphp/stream/tree/v1.4.0"
},
"funding": [
{
- "url": "https://github.com/WyriHaximus",
- "type": "github"
- },
- {
- "url": "https://github.com/clue",
- "type": "github"
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
}
],
- "time": "2021-07-11T12:37:55+00:00"
+ "time": "2024-06-11T12:45:25+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
- "version": "1.0.2",
+ "version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
+ "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
- "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54",
+ "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54",
"shasum": ""
},
"require": {
@@ -1760,7 +1749,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/1.0.2"
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.3"
},
"funding": [
{
@@ -1768,20 +1757,20 @@
"type": "github"
}
],
- "time": "2020-11-30T08:15:22+00:00"
+ "time": "2024-03-01T13:45:45+00:00"
},
{
"name": "sebastian/comparator",
- "version": "3.0.3",
+ "version": "3.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
+ "reference": "bc7d8ac2fe1cce229bff9b5fd4efe65918a1ff52"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
- "reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/bc7d8ac2fe1cce229bff9b5fd4efe65918a1ff52",
+ "reference": "bc7d8ac2fe1cce229bff9b5fd4efe65918a1ff52",
"shasum": ""
},
"require": {
@@ -1834,28 +1823,40 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
- "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.7"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator",
+ "type": "tidelift"
}
],
- "time": "2020-11-30T08:04:30+00:00"
+ "time": "2026-01-24T09:20:25+00:00"
},
{
"name": "sebastian/diff",
- "version": "3.0.3",
+ "version": "3.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211"
+ "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
- "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/98ff311ca519c3aa73ccd3de053bdb377171d7b6",
+ "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6",
"shasum": ""
},
"require": {
@@ -1900,7 +1901,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3"
+ "source": "https://github.com/sebastianbergmann/diff/tree/3.0.6"
},
"funding": [
{
@@ -1908,20 +1909,20 @@
"type": "github"
}
],
- "time": "2020-11-30T07:59:04+00:00"
+ "time": "2024-03-02T06:16:36+00:00"
},
{
"name": "sebastian/environment",
- "version": "4.2.4",
+ "version": "4.2.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0"
+ "reference": "56932f6049a0482853056ffd617c91ffcc754205"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
- "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/56932f6049a0482853056ffd617c91ffcc754205",
+ "reference": "56932f6049a0482853056ffd617c91ffcc754205",
"shasum": ""
},
"require": {
@@ -1963,7 +1964,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
- "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4"
+ "source": "https://github.com/sebastianbergmann/environment/tree/4.2.5"
},
"funding": [
{
@@ -1971,24 +1972,24 @@
"type": "github"
}
],
- "time": "2020-11-30T07:53:42+00:00"
+ "time": "2024-03-01T13:49:59+00:00"
},
{
"name": "sebastian/exporter",
- "version": "3.1.4",
+ "version": "3.1.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db"
+ "reference": "64cfeaa341951ceb2019d7b98232399d57bb2296"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
- "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64cfeaa341951ceb2019d7b98232399d57bb2296",
+ "reference": "64cfeaa341951ceb2019d7b98232399d57bb2296",
"shasum": ""
},
"require": {
- "php": ">=7.0",
+ "php": ">=7.2",
"sebastian/recursion-context": "^3.0"
},
"require-dev": {
@@ -2040,15 +2041,27 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.8"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter",
+ "type": "tidelift"
}
],
- "time": "2021-11-11T13:51:24+00:00"
+ "time": "2025-09-24T05:55:14+00:00"
},
{
"name": "sebastian/global-state",
@@ -2107,16 +2120,16 @@
},
{
"name": "sebastian/object-enumerator",
- "version": "3.0.4",
+ "version": "3.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
+ "reference": "ac5b293dba925751b808e02923399fb44ff0d541"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
- "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/ac5b293dba925751b808e02923399fb44ff0d541",
+ "reference": "ac5b293dba925751b808e02923399fb44ff0d541",
"shasum": ""
},
"require": {
@@ -2152,7 +2165,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/3.0.4"
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.5"
},
"funding": [
{
@@ -2160,20 +2173,20 @@
"type": "github"
}
],
- "time": "2020-11-30T07:40:27+00:00"
+ "time": "2024-03-01T13:54:02+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "1.1.2",
+ "version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
+ "reference": "1d439c229e61f244ff1f211e5c99737f90c67def"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
- "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/1d439c229e61f244ff1f211e5c99737f90c67def",
+ "reference": "1d439c229e61f244ff1f211e5c99737f90c67def",
"shasum": ""
},
"require": {
@@ -2207,7 +2220,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/1.1.2"
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.3"
},
"funding": [
{
@@ -2215,20 +2228,20 @@
"type": "github"
}
],
- "time": "2020-11-30T07:37:18+00:00"
+ "time": "2024-03-01T13:56:04+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "3.0.1",
+ "version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
+ "reference": "8fe7e75986a9d24b4cceae847314035df7703a5a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
- "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/8fe7e75986a9d24b4cceae847314035df7703a5a",
+ "reference": "8fe7e75986a9d24b4cceae847314035df7703a5a",
"shasum": ""
},
"require": {
@@ -2270,28 +2283,40 @@
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
"support": {
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1"
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.3"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context",
+ "type": "tidelift"
}
],
- "time": "2020-11-30T07:34:24+00:00"
+ "time": "2025-08-10T05:25:53+00:00"
},
{
"name": "sebastian/resource-operations",
- "version": "2.0.2",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3"
+ "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3",
- "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/72a7f7674d053d548003b16ff5a106e7e0e06eee",
+ "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee",
"shasum": ""
},
"require": {
@@ -2321,8 +2346,7 @@
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
"support": {
- "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
- "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2"
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.3"
},
"funding": [
{
@@ -2330,7 +2354,7 @@
"type": "github"
}
],
- "time": "2020-11-30T07:30:19+00:00"
+ "time": "2024-03-01T13:59:09+00:00"
},
{
"name": "sebastian/version",
@@ -2445,16 +2469,16 @@
},
{
"name": "symfony/console",
- "version": "v5.4.12",
+ "version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1"
+ "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/c072aa8f724c3af64e2c7a96b796a4863d24dba1",
- "reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed",
+ "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed",
"shasum": ""
},
"require": {
@@ -2519,12 +2543,12 @@
"homepage": "https://symfony.com",
"keywords": [
"cli",
- "command line",
+ "command-line",
"console",
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.4.12"
+ "source": "https://github.com/symfony/console/tree/v5.4.47"
},
"funding": [
{
@@ -2540,20 +2564,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-17T13:18:05+00:00"
+ "time": "2024-11-06T11:30:55+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v2.5.2",
+ "version": "v2.5.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+ "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918",
+ "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918",
"shasum": ""
},
"require": {
@@ -2561,12 +2585,12 @@
},
"type": "library",
"extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
"branch-alias": {
"dev-main": "2.5-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
}
},
"autoload": {
@@ -2591,7 +2615,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4"
},
"funding": [
{
@@ -2607,20 +2631,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2024-09-25T14:11:13+00:00"
},
{
"name": "symfony/finder",
- "version": "v5.4.11",
+ "version": "v5.4.45",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c"
+ "reference": "63741784cd7b9967975eec610b256eed3ede022b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c",
- "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/63741784cd7b9967975eec610b256eed3ede022b",
+ "reference": "63741784cd7b9967975eec610b256eed3ede022b",
"shasum": ""
},
"require": {
@@ -2654,7 +2678,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.4.11"
+ "source": "https://github.com/symfony/finder/tree/v5.4.45"
},
"funding": [
{
@@ -2670,24 +2694,24 @@
"type": "tidelift"
}
],
- "time": "2022-07-29T07:37:50+00:00"
+ "time": "2024-09-28T13:32:08+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.26.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
- "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
@@ -2697,12 +2721,9 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -2736,7 +2757,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
},
"funding": [
{
@@ -2747,41 +2768,42 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.26.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "433d05519ce6990bf3530fba6957499d327395c2"
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
- "reference": "433d05519ce6990bf3530fba6957499d327395c2",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -2817,7 +2839,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
},
"funding": [
{
@@ -2828,41 +2850,42 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2025-06-27T09:58:17+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.26.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -2901,7 +2924,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
},
"funding": [
{
@@ -2912,29 +2935,34 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.26.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
+ "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
- "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
+ "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "ext-iconv": "*",
+ "php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
@@ -2944,12 +2972,9 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -2984,7 +3009,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
@@ -2995,38 +3020,39 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2024-12-23T08:48:59+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.26.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85"
+ "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85",
- "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
+ "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -3063,7 +3089,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0"
},
"funding": [
{
@@ -3074,38 +3100,39 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.26.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
+ "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
- "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
+ "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -3146,7 +3173,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
},
"funding": [
{
@@ -3157,25 +3184,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-05-10T07:21:04+00:00"
+ "time": "2025-01-02T08:10:11+00:00"
},
{
"name": "symfony/process",
- "version": "v5.4.11",
+ "version": "v5.4.51",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1"
+ "reference": "467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1",
- "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1",
+ "url": "https://api.github.com/repos/symfony/process/zipball/467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f",
+ "reference": "467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f",
"shasum": ""
},
"require": {
@@ -3208,7 +3239,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.4.11"
+ "source": "https://github.com/symfony/process/tree/v5.4.51"
},
"funding": [
{
@@ -3219,25 +3250,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-06-27T16:58:25+00:00"
+ "time": "2026-01-26T15:53:37+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.5.2",
+ "version": "v2.5.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
+ "reference": "f37b419f7aea2e9abf10abd261832cace12e3300"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
- "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f37b419f7aea2e9abf10abd261832cace12e3300",
+ "reference": "f37b419f7aea2e9abf10abd261832cace12e3300",
"shasum": ""
},
"require": {
@@ -3253,12 +3288,12 @@
},
"type": "library",
"extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
"branch-alias": {
"dev-main": "2.5-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
}
},
"autoload": {
@@ -3291,7 +3326,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
+ "source": "https://github.com/symfony/service-contracts/tree/v2.5.4"
},
"funding": [
{
@@ -3307,20 +3342,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-30T19:17:29+00:00"
+ "time": "2024-09-25T14:11:13+00:00"
},
{
"name": "symfony/string",
- "version": "v5.4.12",
+ "version": "v5.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "2fc515e512d721bf31ea76bd02fe23ada4640058"
+ "reference": "136ca7d72f72b599f2631aca474a4f8e26719799"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/2fc515e512d721bf31ea76bd02fe23ada4640058",
- "reference": "2fc515e512d721bf31ea76bd02fe23ada4640058",
+ "url": "https://api.github.com/repos/symfony/string/zipball/136ca7d72f72b599f2631aca474a4f8e26719799",
+ "reference": "136ca7d72f72b599f2631aca474a4f8e26719799",
"shasum": ""
},
"require": {
@@ -3377,7 +3412,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.4.12"
+ "source": "https://github.com/symfony/string/tree/v5.4.47"
},
"funding": [
{
@@ -3393,20 +3428,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-12T17:03:11+00:00"
+ "time": "2024-11-10T20:33:58+00:00"
},
{
"name": "symfony/yaml",
- "version": "v5.4.12",
+ "version": "v5.4.45",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c"
+ "reference": "a454d47278cc16a5db371fe73ae66a78a633371e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c",
- "reference": "7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/a454d47278cc16a5db371fe73ae66a78a633371e",
+ "reference": "a454d47278cc16a5db371fe73ae66a78a633371e",
"shasum": ""
},
"require": {
@@ -3452,7 +3487,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v5.4.12"
+ "source": "https://github.com/symfony/yaml/tree/v5.4.45"
},
"funding": [
{
@@ -3468,20 +3503,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-02T15:52:22+00:00"
+ "time": "2024-09-25T14:11:13+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.1",
+ "version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c",
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c",
"shasum": ""
},
"require": {
@@ -3510,7 +3545,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/1.2.1"
+ "source": "https://github.com/theseer/tokenizer/tree/1.3.1"
},
"funding": [
{
@@ -3518,20 +3553,20 @@
"type": "github"
}
],
- "time": "2021-07-28T10:34:58+00:00"
+ "time": "2025-11-17T20:03:58+00:00"
},
{
"name": "yoast/phpunit-polyfills",
- "version": "1.0.3",
+ "version": "1.1.5",
"source": {
"type": "git",
"url": "https://github.com/Yoast/PHPUnit-Polyfills.git",
- "reference": "5ea3536428944955f969bc764bbe09738e151ada"
+ "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/5ea3536428944955f969bc764bbe09738e151ada",
- "reference": "5ea3536428944955f969bc764bbe09738e151ada",
+ "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/41aaac462fbd80feb8dd129e489f4bbc53fe26b0",
+ "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0",
"shasum": ""
},
"require": {
@@ -3539,13 +3574,14 @@
"phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
},
"require-dev": {
- "yoast/yoastcs": "^2.2.0"
+ "php-parallel-lint/php-console-highlighter": "^1.0.0",
+ "php-parallel-lint/php-parallel-lint": "^1.4.0",
+ "yoast/yoastcs": "^3.2.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.x-dev",
- "dev-develop": "1.x-dev"
+ "dev-main": "4.x-dev"
}
},
"autoload": {
@@ -3577,9 +3613,10 @@
],
"support": {
"issues": "https://github.com/Yoast/PHPUnit-Polyfills/issues",
+ "security": "https://github.com/Yoast/PHPUnit-Polyfills/security/policy",
"source": "https://github.com/Yoast/PHPUnit-Polyfills"
},
- "time": "2021-11-23T01:37:03+00:00"
+ "time": "2025-08-10T04:54:36+00:00"
},
{
"name": "yosymfony/resource-watcher",
@@ -3642,14 +3679,15 @@
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
+ "phpdocumentor/reflection": 20,
"scribu/lib-posts-to-posts": 20,
"scribu/scb-framework": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": ">=5.4"
+ "php": ">=7.4"
},
- "platform-dev": [],
- "plugin-api-version": "2.3.0"
+ "platform-dev": {},
+ "plugin-api-version": "2.9.0"
}
diff --git a/lib/class-file-reflector.php b/lib/class-file-reflector.php
index 62f401d..31074df 100644
--- a/lib/class-file-reflector.php
+++ b/lib/class-file-reflector.php
@@ -40,7 +40,7 @@ class File_Reflector extends FileReflector {
/**
* Last DocBlock associated with a non-documentable element.
*
- * @var \PHPParser_Comment_Doc
+ * @var \PhpParser\Comment\Doc
*/
protected $last_doc = null;
@@ -61,9 +61,9 @@ class File_Reflector extends FileReflector {
* Finally, we pick up any docblocks for nodes that usually aren't documentable,
* so they can be assigned to the hooks to which they may belong.
*
- * @param \PHPParser_Node $node
+ * @param \PhpParser\Node $node
*/
- public function enterNode( \PHPParser_Node $node ) {
+ public function enterNode( \PhpParser\Node $node ) {
parent::enterNode( $node );
switch ( $node->getType() ) {
@@ -126,7 +126,11 @@ public function enterNode( \PHPParser_Node $node ) {
// we don't ignore them, we'll end up picking up docblocks that are already
// associated with a named element, and so aren't really from a non-
// documentable element after all.
- if ( ! $this->isNodeDocumentable( $node ) && 'Name' !== $node->getType() && ( $docblock = $node->getDocComment() ) ) {
+ if (
+ ! $this->isNodeDocumentable( $node )
+ && 'Name' !== $node->getType()
+ && 'Name_FullyQualified' !== $node->getType()
+ && ( $docblock = $node->getDocComment() ) ) {
$this->last_doc = $docblock;
}
}
@@ -137,9 +141,9 @@ public function enterNode( \PHPParser_Node $node ) {
* We can now access the function/method reflectors, so we can assign any queued
* hooks to them. The reflector for a node isn't created until the node is left.
*
- * @param \PHPParser_Node $node
+ * @param \PhpParser\Node $node
*/
- public function leaveNode( \PHPParser_Node $node ) {
+ public function leaveNode( \PhpParser\Node $node ) {
parent::leaveNode( $node );
@@ -192,13 +196,15 @@ public function leaveNode( \PHPParser_Node $node ) {
}
/**
- * @param \PHPParser_Node $node
+ * @param \PhpParser\Node $node
*
* @return bool
*/
- protected function isFilter( \PHPParser_Node $node ) {
- // Ignore variable functions
- if ( 'Name' !== $node->name->getType() ) {
+ protected function isFilter( \PhpParser\Node $node ) {
+ if (
+ 'Name' !== $node->name->getType() &&
+ 'Name_FullyQualified' !== $node->name->getType()
+ ) {
return false;
}
@@ -224,13 +230,13 @@ protected function getLocation() {
}
/**
- * @param \PHPParser_Node $node
+ * @param \PhpParser\Node $node
*
* @return bool
*/
- protected function isNodeDocumentable( \PHPParser_Node $node ) {
+ protected function isNodeDocumentable( \PhpParser\Node $node ) {
return parent::isNodeDocumentable( $node )
- || ( $node instanceof \PHPParser_Node_Expr_FuncCall
+ || ( $node instanceof \PhpParser\Node\Expr\FuncCall
&& $this->isFilter( $node ) );
}
}
diff --git a/lib/class-function-call-reflector.php b/lib/class-function-call-reflector.php
index 233e6d8..6fa42a7 100644
--- a/lib/class-function-call-reflector.php
+++ b/lib/class-function-call-reflector.php
@@ -25,24 +25,24 @@ public function getName() {
$shortName = $this->getShortName();
- if ( is_a( $shortName, 'PHPParser_Node_Name_FullyQualified' ) ) {
+ if ( is_a( $shortName, 'PhpParser\Node\Name\FullyQualified' ) ) {
return '\\' . (string) $shortName;
}
- if ( is_a( $shortName, 'PHPParser_Node_Name' ) ) {
+ if ( is_a( $shortName, 'PhpParser\Node\Name' ) ) {
return (string) $shortName;
}
- /** @var \PHPParser_Node_Expr_ArrayDimFetch $shortName */
- if ( is_a( $shortName, 'PHPParser_Node_Expr_ArrayDimFetch' ) ) {
+ /** @var \PhpParser\Node\Expr\ArrayDimFetch $shortName */
+ if ( is_a( $shortName, 'PhpParser\Node\Expr\ArrayDimFetch' ) ) {
$var = $shortName->var->name;
$dim = $shortName->dim->name->parts[0];
return "\${$var}[{$dim}]";
}
- /** @var \PHPParser_Node_Expr_Variable $shortName */
- if ( is_a( $shortName, 'PHPParser_Node_Expr_Variable' ) ) {
+ /** @var \PhpParser\Node\Expr\Variable $shortName */
+ if ( is_a( $shortName, 'PhpParser\Node\Expr\Variable' ) ) {
return $shortName->name;
}
diff --git a/lib/class-hook-reflector.php b/lib/class-hook-reflector.php
index 50075e0..1fa5352 100644
--- a/lib/class-hook-reflector.php
+++ b/lib/class-hook-reflector.php
@@ -3,7 +3,6 @@
namespace WP_Parser;
use phpDocumentor\Reflection\BaseReflector;
-use PHPParser_PrettyPrinter_Default;
/**
* Custom reflector for WordPress hooks.
@@ -14,7 +13,7 @@ class Hook_Reflector extends BaseReflector {
* @return string
*/
public function getName() {
- $printer = new PHPParser_PrettyPrinter_Default;
+ $printer = new \PhpParser\PrettyPrinter\Standard();
return $this->cleanupName( $printer->prettyPrintExpr( $this->node->args[0]->value ) );
}
diff --git a/lib/class-method-call-reflector.php b/lib/class-method-call-reflector.php
index 570d5a5..20289e2 100644
--- a/lib/class-method-call-reflector.php
+++ b/lib/class-method-call-reflector.php
@@ -32,22 +32,26 @@ public function getName() {
$caller = $this->node->var;
}
- if ( $caller instanceof \PHPParser_Node_Expr ) {
+ if ( $caller instanceof \PhpParser\Node\Expr ) {
$printer = new Pretty_Printer;
$caller = $printer->prettyPrintExpr( $caller );
- } elseif ( $caller instanceof \PHPParser_Node_Name_FullyQualified ) {
+ } elseif ( $caller instanceof \PhpParser\Node\Name\FullyQualified ) {
$caller = '\\' . $caller->toString();
- } elseif ( $caller instanceof \PHPParser_Node_Name ) {
+ } elseif ( $caller instanceof \PhpParser\Node\Name ) {
$caller = $caller->toString();
+ } elseif ( $caller instanceof \PhpParser\Node\Stmt\Class_ ) {
+ $caller = $caller->isAnonymous()
+ ? 'class@anonymous'
+ : $caller->name;
}
$caller = $this->_resolveName( $caller );
// If the caller is a function, convert it to the function name
- if ( is_a( $caller, 'PHPParser_Node_Expr_FuncCall' ) ) {
+ if ( is_a( $caller, 'PhpParser\Node\Expr\FuncCall' ) ) {
// Add parentheses to signify this is a function call
- /** @var \PHPParser_Node_Expr_FuncCall $caller */
+ /** @var \PhpParser\Node\Expr\FuncCall $caller */
$caller = implode( '\\', $caller->name->parts ) . '()';
}
@@ -134,13 +138,12 @@ protected function _getClassMapping() {
*
* @return string The resolved class name.
*/
- protected function _resolveName( $class ) {
+ protected function _resolveName( string $class ): string {
if ( ! $this->called_in_class ) {
return $class;
}
-
switch ( $class ) {
case '$this':
case 'self':
diff --git a/lib/class-pretty-printer.php b/lib/class-pretty-printer.php
index 31c37e2..3ba2ad0 100644
--- a/lib/class-pretty-printer.php
+++ b/lib/class-pretty-printer.php
@@ -2,21 +2,18 @@
namespace WP_Parser;
-use PHPParser_Node_Arg;
-use PHPParser_PrettyPrinter_Default;
-
/**
* Extends default printer for arguments.
*/
-class Pretty_Printer extends PHPParser_PrettyPrinter_Default {
+class Pretty_Printer extends \PhpParser\PrettyPrinter\Standard {
/**
* Pretty prints an argument.
*
- * @param PHPParser_Node_Arg $node Expression argument
+ * @param \PhpParser\Node\Arg $node Expression argument
*
* @return string Pretty printed argument
*/
- public function prettyPrintArg( PHPParser_Node_Arg $node ) {
+ public function prettyPrintArg( \PhpParser\Node\Arg $node ) {
return str_replace( "\n" . $this->noIndentToken, "\n", $this->p( $node ) );
}
}
diff --git a/lib/class-static-method-call-reflector.php b/lib/class-static-method-call-reflector.php
index 9d39c7c..6f50c3d 100644
--- a/lib/class-static-method-call-reflector.php
+++ b/lib/class-static-method-call-reflector.php
@@ -12,10 +12,18 @@ class Static_Method_Call_Reflector extends Method_Call_Reflector {
*
* @return string[] Index 0 is the class name, 1 is the method name.
*/
- public function getName() {
+ public function getName(): array {
$class = $this->node->class;
- $prefix = ( is_a( $class, 'PHPParser_Node_Name_FullyQualified' ) ) ? '\\' : '';
- $class = $prefix . $this->_resolveName( implode( '\\', $class->parts ) );
+ $prefix = ( is_a( $class, 'PhpParser\Node\Name\FullyQualified' ) ) ? '\\' : '';
+
+ if ( $class instanceof \PhpParser\Node\Stmt\Class_ && $class->isAnonymous() ) {
+ $class = 'class@anonymous';
+ } elseif ( $class instanceof \PhpParser\Node\Expr\Variable ) {
+ // Static calls like `$foo::bar()`
+ $class = "\${$class->name}";
+ } else {
+ $class = $prefix . $this->_resolveName( implode( '\\', $class->parts ) );
+ }
return array( $class, $this->getShortName() );
}
diff --git a/lib/runner.php b/lib/runner.php
index ba3efdd..6279f5a 100644
--- a/lib/runner.php
+++ b/lib/runner.php
@@ -47,87 +47,92 @@ function get_wp_files( $directory ) {
function parse_files( $files, $root ) {
$output = array();
- foreach ( $files as $filename ) {
- $file = new File_Reflector( $filename );
-
- $path = ltrim( substr( $filename, strlen( $root ) ), DIRECTORY_SEPARATOR );
- $file->setFilename( $path );
-
- $file->process();
+ try {
+ foreach ( $files as $filename ) {
+ $file = new File_Reflector( $filename );
- // TODO proper exporter
- $out = array(
- 'file' => export_docblock( $file ),
- 'path' => str_replace( DIRECTORY_SEPARATOR, '/', $file->getFilename() ),
- 'root' => $root,
- );
+ $path = ltrim( substr( $filename, strlen( $root ) ), DIRECTORY_SEPARATOR );
+ $file->setFilename( $path );
- if ( ! empty( $file->uses ) ) {
- $out['uses'] = export_uses( $file->uses );
- }
+ $file->process();
- foreach ( $file->getIncludes() as $include ) {
- $out['includes'][] = array(
- 'name' => $include->getName(),
- 'line' => $include->getLineNumber(),
- 'type' => $include->getType(),
+ // TODO proper exporter
+ $out = array(
+ 'file' => export_docblock( $file ),
+ 'path' => str_replace( DIRECTORY_SEPARATOR, '/', $file->getFilename() ),
+ 'root' => $root,
);
- }
- foreach ( $file->getConstants() as $constant ) {
- $out['constants'][] = array(
- 'name' => $constant->getShortName(),
- 'line' => $constant->getLineNumber(),
- 'value' => $constant->getValue(),
- );
- }
+ if ( ! empty( $file->uses ) ) {
+ $out['uses'] = export_uses( $file->uses );
+ }
- if ( ! empty( $file->uses['hooks'] ) ) {
- $out['hooks'] = export_hooks( $file->uses['hooks'] );
- }
+ foreach ( $file->getIncludes() as $include ) {
+ $out['includes'][] = array(
+ 'name' => $include->getName(),
+ 'line' => $include->getLineNumber(),
+ 'type' => $include->getType(),
+ );
+ }
- foreach ( $file->getFunctions() as $function ) {
- $func = array(
- 'name' => $function->getShortName(),
- 'namespace' => $function->getNamespace(),
- 'aliases' => $function->getNamespaceAliases(),
- 'line' => $function->getLineNumber(),
- 'end_line' => $function->getNode()->getAttribute( 'endLine' ),
- 'arguments' => export_arguments( $function->getArguments() ),
- 'doc' => export_docblock( $function ),
- 'hooks' => array(),
- );
+ foreach ( $file->getConstants() as $constant ) {
+ $out['constants'][] = array(
+ 'name' => $constant->getShortName(),
+ 'line' => $constant->getLineNumber(),
+ 'value' => $constant->getValue(),
+ );
+ }
- if ( ! empty( $function->uses ) ) {
- $func['uses'] = export_uses( $function->uses );
+ if ( ! empty( $file->uses['hooks'] ) ) {
+ $out['hooks'] = export_hooks( $file->uses['hooks'] );
+ }
- if ( ! empty( $function->uses['hooks'] ) ) {
- $func['hooks'] = export_hooks( $function->uses['hooks'] );
+ foreach ( $file->getFunctions() as $function ) {
+ $func = array(
+ 'name' => $function->getShortName(),
+ 'namespace' => $function->getNamespace(),
+ 'aliases' => $function->getNamespaceAliases(),
+ 'line' => $function->getLineNumber(),
+ 'end_line' => $function->getNode()->getAttribute( 'endLine' ),
+ 'arguments' => export_arguments( $function->getArguments() ),
+ 'doc' => export_docblock( $function ),
+ 'hooks' => array(),
+ );
+
+ if ( ! empty( $function->uses ) ) {
+ $func['uses'] = export_uses( $function->uses );
+
+ if ( ! empty( $function->uses['hooks'] ) ) {
+ $func['hooks'] = export_hooks( $function->uses['hooks'] );
+ }
}
- }
- $out['functions'][] = $func;
- }
+ $out['functions'][] = $func;
+ }
- foreach ( $file->getClasses() as $class ) {
- $class_data = array(
- 'name' => $class->getShortName(),
- 'namespace' => $class->getNamespace(),
- 'line' => $class->getLineNumber(),
- 'end_line' => $class->getNode()->getAttribute( 'endLine' ),
- 'final' => $class->isFinal(),
- 'abstract' => $class->isAbstract(),
- 'extends' => $class->getParentClass(),
- 'implements' => $class->getInterfaces(),
- 'properties' => export_properties( $class->getProperties() ),
- 'methods' => export_methods( $class->getMethods() ),
- 'doc' => export_docblock( $class ),
- );
+ foreach ( $file->getClasses() as $class ) {
+ $class_data = array(
+ 'name' => $class->getShortName(),
+ 'namespace' => $class->getNamespace(),
+ 'line' => $class->getLineNumber(),
+ 'end_line' => $class->getNode()->getAttribute( 'endLine' ),
+ 'final' => $class->isFinal(),
+ 'abstract' => $class->isAbstract(),
+ 'extends' => $class->getParentClass(),
+ 'implements' => $class->getInterfaces(),
+ 'properties' => export_properties( $class->getProperties() ),
+ 'methods' => export_methods( $class->getMethods() ),
+ 'doc' => export_docblock( $class ),
+ );
+
+ $out['classes'][] = $class_data;
+ }
- $out['classes'][] = $class_data;
+ $output[] = $out;
}
-
- $output[] = $out;
+ } catch ( \Exception | \Error $e ) {
+ error_log( \sprintf( 'Error processing file [%s]: %s', $filename, $e->getMessage() ) );
+ throw $e;
}
return $output;
diff --git a/tests/phpunit/tests/export/uses/methods.php b/tests/phpunit/tests/export/uses/methods.php
index 2def239..06c784c 100644
--- a/tests/phpunit/tests/export/uses/methods.php
+++ b/tests/phpunit/tests/export/uses/methods.php
@@ -95,7 +95,7 @@ public function test_instance_methods() {
'name' => 'call_method',
'line' => 10,
'end_line' => 10,
- 'class' => 'get_class()',
+ 'class' => '\get_class()',
'static' => false,
)
);
diff --git a/tests/phpunit/tests/export/uses/nested.php b/tests/phpunit/tests/export/uses/nested.php
index 4caaef6..452ff6a 100644
--- a/tests/phpunit/tests/export/uses/nested.php
+++ b/tests/phpunit/tests/export/uses/nested.php
@@ -19,7 +19,7 @@ public function test_top_function_uses_correct() {
$this->assertFunctionUsesFunction(
'test'
, array(
- 'name' => 'a_function',
+ 'name' => '\a_function',
'line' => 5,
'end_line' => 5,
)
@@ -28,7 +28,7 @@ public function test_top_function_uses_correct() {
$this->assertFunctionUsesFunction(
'test'
, array(
- 'name' => 'sub_test',
+ 'name' => '\sub_test',
'line' => 14,
'end_line' => 14,
)
@@ -74,7 +74,7 @@ public function test_nested_function_uses_correct() {
$this->assertFunctionUsesFunction(
'sub_test'
, array(
- 'name' => 'b_function',
+ 'name' => '\b_function',
'line' => 9,
'end_line' => 9,
)
@@ -141,7 +141,7 @@ public function test_method_uses_correct() {
'My_Class'
, 'a_method'
, array(
- 'name' => 'do_things',
+ 'name' => '\do_things',
'line' => 32,
'end_line' => 32,
)
@@ -178,7 +178,7 @@ public function test_nested_function_in_method_uses_correct() {
$this->assertFunctionUsesFunction(
'sub_method_test'
, array(
- 'name' => 'b_function',
+ 'name' => '\b_function',
'line' => 27,
'end_line' => 27,
)
diff --git a/vendor-packages/phpdocumentor-reflection/.gitattributes b/vendor-packages/phpdocumentor-reflection/.gitattributes
new file mode 100644
index 0000000..780e683
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/.gitattributes
@@ -0,0 +1 @@
+*.php text eol=lf
\ No newline at end of file
diff --git a/vendor-packages/phpdocumentor-reflection/.gitignore b/vendor-packages/phpdocumentor-reflection/.gitignore
new file mode 100644
index 0000000..3ce5adb
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/.gitignore
@@ -0,0 +1,2 @@
+.idea
+vendor
diff --git a/vendor-packages/phpdocumentor-reflection/.travis.yml b/vendor-packages/phpdocumentor-reflection/.travis.yml
new file mode 100644
index 0000000..eef782c
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/.travis.yml
@@ -0,0 +1,32 @@
+language: php
+php:
+ - 5.3.3
+ - 5.3
+ - 5.4
+ - 5.5
+ - 5.6
+ - hhvm
+ - hhvm-nightly
+
+matrix:
+ allow_failures:
+ - php: hhvm
+ - php: hhvm-nightly
+
+script:
+ - vendor/bin/phpunit
+
+before_script:
+ - sudo apt-get -qq update > /dev/null
+ - phpenv rehash > /dev/null
+ - composer selfupdate --quiet
+ - composer install --no-interaction --prefer-source --dev
+ - vendor/bin/phpunit
+ - composer update --no-interaction --prefer-source --dev
+
+notifications:
+ irc: "irc.freenode.org#phpdocumentor"
+ email:
+ - mike.vanriel@naenius.com
+ - ashnazg@php.net
+ - boen.robot@gmail.com
diff --git a/vendor-packages/phpdocumentor-reflection/README.md b/vendor-packages/phpdocumentor-reflection/README.md
new file mode 100644
index 0000000..4e4e345
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/README.md
@@ -0,0 +1,4 @@
+Reflection [](http://travis-ci.org/phpDocumentor/Reflection)
+==========
+
+Reflection library to do Static Analysis for PHP Projects
diff --git a/vendor-packages/phpdocumentor-reflection/composer.json b/vendor-packages/phpdocumentor-reflection/composer.json
new file mode 100644
index 0000000..c3e34cd
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/composer.json
@@ -0,0 +1,32 @@
+{
+ "name": "phpdocumentor/reflection",
+ "description": "Reflection library to do Static Analysis for PHP Projects",
+ "keywords": ["phpdoc", "phpDocumentor", "reflection", "static analysis"],
+ "homepage": "http://www.phpdoc.org",
+ "license": "MIT",
+ "autoload": {
+ "psr-0": {
+ "phpDocumentor": ["src/", "tests/unit/", "tests/mocks/"]
+ }
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "psr/log": "~1.0",
+ "nikic/php-parser": "^3.0",
+ "phpdocumentor/reflection-docblock": "~2.0"
+ },
+ "suggests": {
+ "symfony/event-dispatcher": "~2.1"
+ },
+ "require-dev": {
+ "behat/behat": "~2.4",
+ "phpunit/phpunit": "~4.0",
+ "mockery/mockery": "~0.8"
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev",
+ "dev-wp": "v3.0.2-dmsnell"
+ }
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/composer.lock b/vendor-packages/phpdocumentor-reflection/composer.lock
new file mode 100644
index 0000000..ba5b162
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/composer.lock
@@ -0,0 +1,1517 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "a95f5fcfa7881ef2a6d076533216cc21",
+ "content-hash": "5f18bb38fd8e84b5f811b568bc546c0c",
+ "packages": [
+ {
+ "name": "nikic/php-parser",
+ "version": "v1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51",
+ "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "time": "2015-09-19 14:15:08"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "38743b677965c48a637097b2746a281264ae2347"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/38743b677965c48a637097b2746a281264ae2347",
+ "reference": "38743b677965c48a637097b2746a281264ae2347",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*@stable"
+ },
+ "suggest": {
+ "dflydev/markdown": "1.0.*",
+ "erusev/parsedown": "~0.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "phpDocumentor": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "mike.vanriel@naenius.com"
+ }
+ ],
+ "time": "2014-08-09 10:27:07"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Psr\\Log\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2012-12-21 11:40:51"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "behat/behat",
+ "version": "v2.5.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Behat/Behat.git",
+ "reference": "c3a105a3c0457df919879c72b63b910e63739e51"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Behat/Behat/zipball/c3a105a3c0457df919879c72b63b910e63739e51",
+ "reference": "c3a105a3c0457df919879c72b63b910e63739e51",
+ "shasum": ""
+ },
+ "require": {
+ "behat/gherkin": "~2.3.0",
+ "php": ">=5.3.1",
+ "symfony/config": "~2.0",
+ "symfony/console": "~2.0",
+ "symfony/dependency-injection": "~2.0",
+ "symfony/event-dispatcher": "~2.0",
+ "symfony/finder": "~2.0",
+ "symfony/translation": "~2.0",
+ "symfony/yaml": "~2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~3.7.19"
+ },
+ "suggest": {
+ "behat/mink-extension": "for integration with Mink testing framework",
+ "behat/symfony2-extension": "for integration with Symfony2 web framework",
+ "behat/yii-extension": "for integration with Yii web framework"
+ },
+ "bin": [
+ "bin/behat"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Behat\\Behat": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ }
+ ],
+ "description": "Scenario-oriented BDD framework for PHP 5.3",
+ "homepage": "http://behat.org/",
+ "keywords": [
+ "BDD",
+ "Behat",
+ "Symfony2"
+ ],
+ "time": "2014-04-26 16:55:16"
+ },
+ {
+ "name": "behat/gherkin",
+ "version": "v2.3.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Behat/Gherkin.git",
+ "reference": "2b33963da5525400573560c173ab5c9c057e1852"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2b33963da5525400573560c173ab5c9c057e1852",
+ "reference": "2b33963da5525400573560c173ab5c9c057e1852",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.1",
+ "symfony/finder": "~2.0"
+ },
+ "require-dev": {
+ "symfony/config": "~2.0",
+ "symfony/translation": "~2.0",
+ "symfony/yaml": "~2.0"
+ },
+ "suggest": {
+ "symfony/config": "If you want to use Config component to manage resources",
+ "symfony/translation": "If you want to use Symfony2 translations adapter",
+ "symfony/yaml": "If you want to parse features, represented in YAML files"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-develop": "2.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Behat\\Gherkin": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ }
+ ],
+ "description": "Gherkin DSL parser for PHP 5.3",
+ "homepage": "http://behat.org/",
+ "keywords": [
+ "BDD",
+ "Behat",
+ "DSL",
+ "Symfony2",
+ "parser"
+ ],
+ "time": "2013-10-15 11:22:17"
+ },
+ {
+ "name": "mockery/mockery",
+ "version": "0.9.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/padraic/mockery.git",
+ "reference": "17f63ee40ed14a8afb7ba1f0ae15cc4491d719d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/padraic/mockery/zipball/17f63ee40ed14a8afb7ba1f0ae15cc4491d719d1",
+ "reference": "17f63ee40ed14a8afb7ba1f0ae15cc4491d719d1",
+ "shasum": ""
+ },
+ "require": {
+ "lib-pcre": ">=7.0",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "hamcrest/hamcrest-php": "~1.1",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "~0.7@dev"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.9.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Mockery": "library/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Pádraic Brady",
+ "email": "padraic.brady@gmail.com",
+ "homepage": "http://blog.astrumfutura.com"
+ },
+ {
+ "name": "Dave Marshall",
+ "email": "dave.marshall@atstsolutions.co.uk",
+ "homepage": "http://davedevelopment.co.uk"
+ }
+ ],
+ "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succint API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.",
+ "homepage": "http://github.com/padraic/mockery",
+ "keywords": [
+ "BDD",
+ "TDD",
+ "library",
+ "mock",
+ "mock objects",
+ "mockery",
+ "stub",
+ "test",
+ "test double",
+ "testing"
+ ],
+ "time": "2014-05-02 12:16:45"
+ },
+ {
+ "name": "ocramius/instantiator",
+ "version": "1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Ocramius/Instantiator.git",
+ "reference": "a7abbb5fc9df6e7126af741dd6c140d1a7369435"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Ocramius/Instantiator/zipball/a7abbb5fc9df6e7126af741dd6c140d1a7369435",
+ "reference": "a7abbb5fc9df6e7126af741dd6c140d1a7369435",
+ "shasum": ""
+ },
+ "require": {
+ "ocramius/lazy-map": "1.0.*",
+ "php": "~5.3"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "2.0.*@ALPHA"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Instantiator\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/Ocramius/Instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2014-08-14 15:10:55"
+ },
+ {
+ "name": "ocramius/lazy-map",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Ocramius/LazyMap.git",
+ "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Ocramius/LazyMap/zipball/7fe3d347f5e618bcea7d39345ff83f3651d8b752",
+ "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.6",
+ "phpmd/phpmd": "1.5.*",
+ "phpunit/phpunit": ">=3.7",
+ "satooshi/php-coveralls": "~0.6",
+ "squizlabs/php_codesniffer": "1.4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "LazyMap\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/",
+ "role": "Developer"
+ }
+ ],
+ "description": "A library that provides lazy instantiation logic for a map of objects",
+ "homepage": "https://github.com/Ocramius/LazyMap",
+ "keywords": [
+ "lazy",
+ "lazy instantiation",
+ "lazy loading",
+ "map",
+ "service location"
+ ],
+ "time": "2013-11-09 22:30:54"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "2.0.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "6d196af48e8c100a3ae881940123e693da5a9217"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6d196af48e8c100a3ae881940123e693da5a9217",
+ "reference": "6d196af48e8c100a3ae881940123e693da5a9217",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "phpunit/php-file-iterator": "~1.3.1",
+ "phpunit/php-text-template": "~1.2.0",
+ "phpunit/php-token-stream": "~1.2.2",
+ "sebastian/environment": "~1.0.0",
+ "sebastian/version": "~1.0.3"
+ },
+ "require-dev": {
+ "ext-xdebug": ">=2.1.4",
+ "phpunit/phpunit": "~4.0.14"
+ },
+ "suggest": {
+ "ext-dom": "*",
+ "ext-xdebug": ">=2.2.1",
+ "ext-xmlwriter": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2014-08-06 06:39:42"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb",
+ "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "File/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2013-10-10 15:34:57"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+ "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "Text/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2014-01-30 17:20:04"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+ "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "PHP/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2013-08-02 07:42:54"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32",
+ "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "PHP/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2014-03-03 05:10:30"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "4.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "a33fa68ece9f8c68589bfc2da8d2794e27b820bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a33fa68ece9f8c68589bfc2da8d2794e27b820bc",
+ "reference": "a33fa68ece9f8c68589bfc2da8d2794e27b820bc",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=5.3.3",
+ "phpunit/php-code-coverage": "~2.0",
+ "phpunit/php-file-iterator": "~1.3.1",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-timer": "~1.0.2",
+ "phpunit/phpunit-mock-objects": "~2.2",
+ "sebastian/comparator": "~1.0",
+ "sebastian/diff": "~1.1",
+ "sebastian/environment": "~1.0",
+ "sebastian/exporter": "~1.0",
+ "sebastian/version": "~1.0",
+ "symfony/yaml": "~2.0"
+ },
+ "suggest": {
+ "phpunit/php-invoker": "~1.1"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ "",
+ "../../symfony/yaml/"
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "http://www.phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2014-08-18 05:12:30"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "42e589e08bc86e3e9bdf20d385e948347788505b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/42e589e08bc86e3e9bdf20d385e948347788505b",
+ "reference": "42e589e08bc86e3e9bdf20d385e948347788505b",
+ "shasum": ""
+ },
+ "require": {
+ "ocramius/instantiator": "~1.0",
+ "php": ">=5.3.3",
+ "phpunit/php-text-template": "~1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.2.*@dev"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "time": "2014-08-02 13:50:58"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2",
+ "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/diff": "~1.1",
+ "sebastian/exporter": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2014-05-02 07:05:58"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d",
+ "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "http://www.github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ],
+ "time": "2013-08-03 16:46:33"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a",
+ "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.0.*@dev"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2014-02-18 16:17:19"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529",
+ "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.0.*@dev"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net",
+ "role": "Lead"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2014-02-16 08:26:31"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
+ "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2014-03-07 15:35:33"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v2.5.3",
+ "target-dir": "Symfony/Component/Config",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "8d044668c7ccb4ade684e368d910e3aadcff6f6c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/8d044668c7ccb4ade684e368d910e3aadcff6f6c",
+ "reference": "8d044668c7ccb4ade684e368d910e3aadcff6f6c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/filesystem": "~2.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Config\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Config Component",
+ "homepage": "http://symfony.com",
+ "time": "2014-08-05 09:00:40"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v2.5.3",
+ "target-dir": "Symfony/Component/Console",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "cd2d1e4bac2206b337326b0140ff475fe9ad5f63"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/cd2d1e4bac2206b337326b0140ff475fe9ad5f63",
+ "reference": "cd2d1e4bac2206b337326b0140ff475fe9ad5f63",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/event-dispatcher": "~2.1"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Console\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "http://symfony.com",
+ "time": "2014-08-05 09:00:40"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v2.5.3",
+ "target-dir": "Symfony/Component/DependencyInjection",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "54529fdc797a88c030441773adadcc759bb102c2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/54529fdc797a88c030441773adadcc759bb102c2",
+ "reference": "54529fdc797a88c030441773adadcc759bb102c2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "symfony/config": "~2.2",
+ "symfony/expression-language": "~2.4",
+ "symfony/yaml": "~2.0"
+ },
+ "suggest": {
+ "symfony/config": "",
+ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\DependencyInjection\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony DependencyInjection Component",
+ "homepage": "http://symfony.com",
+ "time": "2014-08-06 06:44:37"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v2.5.3",
+ "target-dir": "Symfony/Component/EventDispatcher",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "8faf5cc7e80fde74a650a36e60d32ce3c3e0457b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8faf5cc7e80fde74a650a36e60d32ce3c3e0457b",
+ "reference": "8faf5cc7e80fde74a650a36e60d32ce3c3e0457b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~2.0",
+ "symfony/dependency-injection": "~2.0",
+ "symfony/stopwatch": "~2.2"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "http://symfony.com",
+ "time": "2014-07-28 13:20:46"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v2.5.3",
+ "target-dir": "Symfony/Component/Filesystem",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "c1309b0ee195ad264a4314435bdaecdfacb8ae9c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/c1309b0ee195ad264a4314435bdaecdfacb8ae9c",
+ "reference": "c1309b0ee195ad264a4314435bdaecdfacb8ae9c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Filesystem\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "http://symfony.com",
+ "time": "2014-07-09 09:05:48"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v2.5.3",
+ "target-dir": "Symfony/Component/Finder",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Finder.git",
+ "reference": "090fe4eaff414d8f2171c7a4748ea868d530775f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Finder/zipball/090fe4eaff414d8f2171c7a4748ea868d530775f",
+ "reference": "090fe4eaff414d8f2171c7a4748ea868d530775f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Finder\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "http://symfony.com",
+ "time": "2014-07-28 13:20:46"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v2.5.3",
+ "target-dir": "Symfony/Component/Translation",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Translation.git",
+ "reference": "ae573e45b099b1e2d332930ac626cd4270e09539"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Translation/zipball/ae573e45b099b1e2d332930ac626cd4270e09539",
+ "reference": "ae573e45b099b1e2d332930ac626cd4270e09539",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "symfony/config": "~2.0",
+ "symfony/yaml": "~2.2"
+ },
+ "suggest": {
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Translation\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Translation Component",
+ "homepage": "http://symfony.com",
+ "time": "2014-07-28 13:20:46"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v2.5.3",
+ "target-dir": "Symfony/Component/Yaml",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Yaml.git",
+ "reference": "5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Yaml/zipball/5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f",
+ "reference": "5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Yaml\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "http://symfony.com",
+ "time": "2014-08-05 09:00:40"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=5.3.3"
+ },
+ "platform-dev": []
+}
diff --git a/vendor-packages/phpdocumentor-reflection/phpunit.xml.dist b/vendor-packages/phpdocumentor-reflection/phpunit.xml.dist
new file mode 100644
index 0000000..b99c69b
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/phpunit.xml.dist
@@ -0,0 +1,18 @@
+
+
+
+
+
+ ./tests/unit/
+
+
+
+
+ src/phpDocumentor
+
+
+
+
+
+
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/BaseReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/BaseReflector.php
new file mode 100644
index 0000000..9c74a0f
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/BaseReflector.php
@@ -0,0 +1,318 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use Exception;
+use InvalidArgumentException;
+use phpDocumentor\Event\Dispatcher;
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\DocBlock\Context;
+use phpDocumentor\Reflection\DocBlock\Location;
+use phpDocumentor\Reflection\Event\PostDocBlockExtractionEvent;
+use PhpParser\NodeAbstract;
+use Psr\Log\LogLevel;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Stmt;
+use PhpParser\PrettyPrinterAbstract;
+
+/**
+ * Basic reflection providing support for events and basic properties as a
+ * DocBlock and names.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+abstract class BaseReflector extends ReflectionAbstract
+{
+ /** @var \PhpParser\Node\Stmt */
+ protected $node;
+
+ /**
+ * The package name that is passed on by the parent Reflector.
+ *
+ * May be overwritten and should be passed on to children supporting
+ * packages.
+ *
+ * @var string
+ */
+ protected $default_package_name = '';
+
+ /**
+ * PHP AST pretty printer used to get representations of values.
+ *
+ * @var \PhpParser\PrettyPrinterAbstract
+ */
+ protected static $prettyPrinter = null;
+
+ /**
+ * Initializes this reflector with the correct node as produced by
+ * PHP-Parser.
+ *
+ * @param NodeAbstract $node
+ * @param Context $context
+ *
+ * @link http://github.com/nikic/PHP-Parser
+ */
+ public function __construct(NodeAbstract $node, Context $context)
+ {
+ $this->node = $node;
+ $context->setLSEN($this->getLSEN());
+ $this->context = $context;
+ }
+
+ /**
+ * Returns the current PHP-Parser node that holds more detailed information
+ * about the reflected object. e.g. position in the file and further attributes.
+ * @return \PhpParser\Node\Stmt|\PhpParser\NodeAbstract
+ */
+ public function getNode()
+ {
+ return $this->node;
+ }
+
+ /**
+ * Sets the name for the namespace.
+ *
+ * @param string $namespace
+ *
+ * @throws InvalidArgumentException if something other than a string is
+ * passed.
+ *
+ * @return void
+ */
+ public function setNamespace($namespace)
+ {
+ if (!is_string($namespace)) {
+ throw new InvalidArgumentException(
+ 'Expected a string for the namespace'
+ );
+ }
+
+ $this->context->setNamespace($namespace);
+ }
+
+ /**
+ * Returns the parsed DocBlock.
+ *
+ * @return DocBlock|null
+ */
+ public function getDocBlock()
+ {
+ return $this->extractDocBlock($this->node);
+ }
+
+ /**
+ * Extracts a parsed DocBlock from an object.
+ *
+ * @param object $node Any object with a "getDocComment()" method.
+ *
+ * @return DocBlock|null
+ */
+ protected function extractDocBlock($node)
+ {
+ $doc_block = null;
+ $comment = $node->getDocComment();
+ if ($comment) {
+ try {
+ $doc_block = new DocBlock(
+ (string) $comment,
+ $this->context,
+ new Location($comment->getLine())
+ );
+ } catch (Exception $e) {
+ $this->log($e->getMessage(), LogLevel::CRITICAL);
+ }
+ }
+
+ if (class_exists('phpDocumentor\Event\Dispatcher')) {
+ Dispatcher::getInstance()->dispatch(
+ 'reflection.docblock-extraction.post',
+ PostDocBlockExtractionEvent
+ ::createInstance($this)->setDocblock($doc_block)
+ );
+ }
+
+ return $doc_block;
+ }
+
+ /**
+ * Returns the name for this Reflector instance.
+ *
+ * @return string
+ */
+ public function getName()
+ {
+ if (isset($this->node->namespacedName)) {
+ return '\\'.implode('\\', $this->node->namespacedName->parts);
+ }
+
+ return $this->getShortName();
+ }
+
+ /**
+ * Returns the last component of a namespaced name as a short form.
+ *
+ * @return string
+ */
+ public function getShortName()
+ {
+ if ( isset($this->node->name) ) {
+ return $this->node->name;
+ }
+ if ( $this->node instanceof \Stringable ){
+ return (string) $this->node;
+ }
+ if ( $this->node instanceof \PhpParser\Node\Stmt\Class_ && $this->node->isAnonymous() ) {
+ return 'class@anonymous';
+ }
+ }
+
+ /**
+ * Gets the LSEN.
+ *
+ * Returns this element's Local Structural Element Name (LSEN). This name
+ * consistents of the element's short name, along with punctuation that
+ * hints at the kind of structural element. If the structural element is
+ * part of a type (i.e. an interface/trait/class' property/method/constant),
+ * it also contains the name of the owning type.
+ *
+ * @return string
+ */
+ public function getLSEN()
+ {
+ return '';
+ }
+
+ /**
+ * Returns the namespace name for this object.
+ *
+ * If this object does not have a namespace then the word 'global' is
+ * returned to indicate a global namespace.
+ *
+ * @return string
+ */
+ public function getNamespace()
+ {
+ if (!isset($this->node->namespacedName)) {
+ return $this->context->getNamespace();
+ }
+
+ $parts = $this->node->namespacedName->parts;
+ array_pop($parts);
+
+ $namespace = implode('\\', $parts);
+
+ return $namespace ? $namespace : 'global';
+ }
+
+ /**
+ * Returns a listing of namespace aliases where the key represents the alias
+ * and the value the Fully Qualified Namespace Name.
+ *
+ * @return string[]
+ */
+ public function getNamespaceAliases()
+ {
+ return $this->context->getNamespaceAliases();
+ }
+
+ /**
+ * Sets a listing of namespace aliases.
+ *
+ * The keys represents the alias name and the value the
+ * Fully Qualified Namespace Name (FQNN).
+ *
+ * @param string[] $aliases
+ *
+ * @return void
+ */
+ public function setNamespaceAliases(array $aliases)
+ {
+ $this->context->setNamespaceAliases($aliases);
+ }
+
+ /**
+ * Sets the Fully Qualified Namespace Name (FQNN) for an alias.
+ *
+ * @param string $alias
+ * @param string $fqnn
+ *
+ * @return void
+ */
+ public function setNamespaceAlias($alias, $fqnn)
+ {
+ $this->context->setNamespaceAlias($alias, $fqnn);
+ }
+
+ /**
+ * Returns the line number where this object starts.
+ *
+ * @return int
+ */
+ public function getLinenumber()
+ {
+ return $this->node->getLine();
+ }
+
+ /**
+ * Sets the default package name for this object.
+ *
+ * If the DocBlock contains a different package name then that overrides
+ * this package name.
+ *
+ * @param string $default_package_name The name of the package as defined
+ * in the PHPDoc Standard.
+ *
+ * @return void
+ */
+ public function setDefaultPackageName($default_package_name)
+ {
+ $this->default_package_name = $default_package_name;
+ }
+
+ /**
+ * Returns the package name that is default for this element.
+ *
+ * This value may change after the DocBlock is interpreted. If that contains
+ * a package tag then that tag overrides the Default package name.
+ *
+ * @return string
+ */
+ public function getDefaultPackageName()
+ {
+ return $this->default_package_name;
+ }
+
+ /**
+ * Returns a simple human readable output for a value.
+ *
+ * @param \PhpParser\Node\Expr $value The value node as provided by
+ * PHP-Parser.
+ *
+ * @return string
+ */
+ protected function getRepresentationOfValue(
+ \PhpParser\Node\Expr $value = null
+ ) {
+ if (null === $value) {
+ return '';
+ }
+
+ if (!self::$prettyPrinter) {
+ self::$prettyPrinter = new PrettyPrinter();
+ }
+
+ return self::$prettyPrinter->prettyPrintExpr($value);
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector.php
new file mode 100644
index 0000000..1faa37e
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector.php
@@ -0,0 +1,100 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\TraitUse;
+
+/**
+ * Provides static reflection for a class.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class ClassReflector extends InterfaceReflector
+{
+ /** @var Class_ */
+ protected $node;
+
+ /** @var string[] */
+ protected $traits = array();
+
+ public function parseSubElements()
+ {
+ /** @var TraitUse $stmt */
+ foreach ($this->node->stmts as $stmt) {
+ if ($stmt instanceof TraitUse) {
+ foreach ($stmt->traits as $trait) {
+ $this->traits[] = '\\' . (string) $trait;
+ }
+ }
+ }
+
+ parent::parseSubElements();
+ }
+
+ /**
+ * Returns whether this is an abstract class.
+ *
+ * @return bool
+ */
+ public function isAbstract()
+ {
+ return (bool) ($this->node->type & Class_::MODIFIER_ABSTRACT);
+ }
+
+ /**
+ * Returns whether this class is final and thus cannot be extended.
+ *
+ * @return bool
+ */
+ public function isFinal()
+ {
+ return (bool) ($this->node->type & Class_::MODIFIER_FINAL);
+ }
+
+ /**
+ * Returns a list of the names of traits used in this class.
+ *
+ * @return string[]
+ */
+ public function getTraits()
+ {
+ return $this->traits;
+ }
+
+ public function getParentClass()
+ {
+ return isset($this->node->extends) ? '\\'.(string) $this->node->extends : '';
+ }
+
+ /**
+ * BC Break: used to be getParentInterfaces
+ *
+ * @return string[] Names of interfaces the class implements.
+ */
+ public function getInterfaces()
+ {
+ $names = array();
+ if (isset($this->node->implements)) {
+ /** @var Name */
+ foreach ($this->node->implements as $node) {
+ $names[] = '\\'.(string) $node;
+ }
+ }
+
+ return $names;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/ConstantReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/ConstantReflector.php
new file mode 100644
index 0000000..580a318
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/ConstantReflector.php
@@ -0,0 +1,41 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\ClassReflector;
+
+use phpDocumentor\Reflection\BaseReflector;
+use phpDocumentor\Reflection\ConstantReflector as BaseConstantReflector;
+use phpDocumentor\Reflection\DocBlock\Context;
+use PhpParser\Node\Stmt\ClassConst;
+use PhpParser\Node\Const_;
+
+class ConstantReflector extends BaseConstantReflector
+{
+ /** @var ClassConst */
+ protected $constant;
+
+ /**
+ * Registers the Constant Statement and Node with this reflector.
+ *
+ * @param ClassConst $stmt
+ * @param Context $context
+ * @param Const_ $node
+ */
+ public function __construct(
+ ClassConst $stmt,
+ Context $context,
+ Const_ $node
+ ) {
+ BaseReflector::__construct($node, $context);
+ $this->constant = $stmt;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/MethodReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/MethodReflector.php
new file mode 100644
index 0000000..9fe6990
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/MethodReflector.php
@@ -0,0 +1,78 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\ClassReflector;
+
+use phpDocumentor\Reflection\FunctionReflector;
+use PhpParser\Node\Stmt\Class_;
+
+class MethodReflector extends FunctionReflector
+{
+ /** @var \PhpParser\Node\Stmt\ClassMethod */
+ protected $node;
+
+ /**
+ * Returns the visibility for this item.
+ *
+ * The returned value should match either of the following:
+ *
+ * * public
+ * * protected
+ * * private
+ *
+ * If a method has no visibility set in the class definition this method
+ * will return 'public'.
+ *
+ * @return string
+ */
+ public function getVisibility()
+ {
+ if ($this->node->type & Class_::MODIFIER_PROTECTED) {
+ return 'protected';
+ }
+ if ($this->node->type & Class_::MODIFIER_PRIVATE) {
+ return 'private';
+ }
+
+ return 'public';
+ }
+
+ /**
+ * Returns whether this method is static.
+ *
+ * @return bool
+ */
+ public function isAbstract()
+ {
+ return (bool) ($this->node->type & Class_::MODIFIER_ABSTRACT);
+ }
+
+ /**
+ * Returns whether this method is static.
+ *
+ * @return bool
+ */
+ public function isStatic()
+ {
+ return (bool) ($this->node->type & Class_::MODIFIER_STATIC);
+ }
+
+ /**
+ * Returns whether this method is final.
+ *
+ * @return bool
+ */
+ public function isFinal()
+ {
+ return (bool) ($this->node->type & Class_::MODIFIER_FINAL);
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/PropertyReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/PropertyReflector.php
new file mode 100644
index 0000000..aba8e7b
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ClassReflector/PropertyReflector.php
@@ -0,0 +1,107 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\ClassReflector;
+
+use phpDocumentor\Reflection\BaseReflector;
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\DocBlock\Context;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\Property;
+use PhpParser\Node\Stmt\PropertyProperty;
+
+class PropertyReflector extends BaseReflector
+{
+ /** @var Property */
+ protected $property;
+
+ /** @var PropertyProperty */
+ protected $node;
+
+ public function __construct(
+ Property $property,
+ Context $context,
+ PropertyProperty $node
+ ) {
+ parent::__construct($node, $context);
+ $this->property = $property;
+ }
+
+ public function getName()
+ {
+ return '$'.parent::getName();
+ }
+
+ /**
+ * Returns the default value or null if none found.
+ *
+ * Please note that if the default value is null that this method returns
+ * string 'null'.
+ *
+ * @return null|string
+ */
+ public function getDefault()
+ {
+ $result = null;
+ if ($this->node->default) {
+ $result = $this->getRepresentationOfValue($this->node->default);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the visibility for this item.
+ *
+ * The returned value should match either of the following:
+ *
+ * * public
+ * * protected
+ * * private
+ *
+ * If a method has no visibility set in the class definition this method
+ * will return 'public'.
+ *
+ * @return string
+ */
+ public function getVisibility()
+ {
+ if ($this->property->type & \PhpParser\Node\Stmt\Class_::MODIFIER_PROTECTED) {
+ return 'protected';
+ }
+ if ($this->property->type & \PhpParser\Node\Stmt\Class_::MODIFIER_PRIVATE) {
+ return 'private';
+ }
+
+ return 'public';
+ }
+
+ /**
+ * Returns whether this property is static.
+ *
+ * @return bool
+ */
+ public function isStatic()
+ {
+ return (bool) ($this->property->type & \PhpParser\Node\Stmt\Class_::MODIFIER_STATIC);
+ }
+
+ /**
+ * Returns the parsed DocBlock.
+ *
+ * @return DocBlock|null
+ */
+ public function getDocBlock()
+ {
+ return $this->extractDocBlock($this->property);
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ConstantReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ConstantReflector.php
new file mode 100644
index 0000000..cd106c1
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ConstantReflector.php
@@ -0,0 +1,69 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\DocBlock\Context;
+use PhpParser\Node\Const_;
+use PhpParser\Node\Stmt\Const_ as ConstStmt;
+
+/**
+ * Provides Static Reflection for file-level constants.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class ConstantReflector extends BaseReflector
+{
+ /** @var ConstStmt */
+ protected $constant;
+
+ /** @var Const_ */
+ protected $node;
+
+ /**
+ * Registers the Constant Statement and Node with this reflector.
+ *
+ * @param ConstStmt $stmt
+ * @param Const_ $node
+ */
+ public function __construct(
+ ConstStmt $stmt,
+ Context $context,
+ Const_ $node
+ ) {
+ parent::__construct($node, $context);
+ $this->constant = $stmt;
+ }
+
+ /**
+ * Returns the value contained in this Constant.
+ *
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->getRepresentationOfValue($this->node->value);
+ }
+
+ /**
+ * Returns the parsed DocBlock.
+ *
+ * @return DocBlock|null
+ */
+ public function getDocBlock()
+ {
+ return $this->extractDocBlock($this->constant);
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Event/ExportDocBlockTagEvent.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Event/ExportDocBlockTagEvent.php
new file mode 100644
index 0000000..f6b754f
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Event/ExportDocBlockTagEvent.php
@@ -0,0 +1,55 @@
+xml;
+ }
+
+ /**
+ * @return Tag|null
+ */
+ public function getObject()
+ {
+ return $this->object;
+ }
+
+ /**
+ * @param Tag $object
+ *
+ * @return ExportDocBlockTagEvent
+ */
+ public function setObject(Tag $object = null)
+ {
+ $this->object = $object;
+
+ return $this;
+ }
+
+ /**
+ * @param DOMNode $xml
+ *
+ * @return ExportDocBlockTagEvent
+ */
+ public function setXml(DOMNode $xml = null)
+ {
+ $this->xml = $xml;
+
+ return $this;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Event/PostDocBlockExtractionEvent.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Event/PostDocBlockExtractionEvent.php
new file mode 100644
index 0000000..897918f
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Event/PostDocBlockExtractionEvent.php
@@ -0,0 +1,31 @@
+docblock = $docblock;
+
+ return $this;
+ }
+
+ /**
+ * @return DocBlock|null
+ */
+ public function getDocblock()
+ {
+ return $this->docblock;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception.php
new file mode 100644
index 0000000..9d9f78e
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception.php
@@ -0,0 +1,23 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+/**
+ * An exception specifically originating from the Reflection component.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class Exception extends \Exception
+{
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception/UnparsableFile.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception/UnparsableFile.php
new file mode 100644
index 0000000..854de95
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception/UnparsableFile.php
@@ -0,0 +1,25 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Exception;
+
+/**
+ * Exception representing any situation where the file is not parsable.
+ *
+ * @author Mike van Riel
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class UnparsableFile extends \phpDocumentor\Reflection\Exception
+{
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception/UnreadableFile.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception/UnreadableFile.php
new file mode 100644
index 0000000..93d61c5
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Exception/UnreadableFile.php
@@ -0,0 +1,26 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Exception;
+
+/**
+ * Exception representing any error in the Reflection library due to a file not
+ * being readable or accessible.
+ *
+ * @author Mike van Riel
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class UnreadableFile extends \phpDocumentor\Reflection\Exception
+{
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FileReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FileReflector.php
new file mode 100644
index 0000000..91ff73a
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FileReflector.php
@@ -0,0 +1,563 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Event\Dispatcher;
+use phpDocumentor\Parser\Event\LogEvent;
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\DocBlock\Context;
+use phpDocumentor\Reflection\DocBlock\Location;
+use phpDocumentor\Reflection\Event\PostDocBlockExtractionEvent;
+use phpDocumentor\Reflection\Exception;
+use PhpParser\Node\Stmt\ClassMethod;
+use Psr\Log\LogLevel;
+use PhpParser\Comment\Doc;
+use PhpParser\Node;
+use PhpParser\Node\Const_;
+use PhpParser\Node\Expr\FuncCall;
+use PhpParser\Node\Expr\Include_;
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\ClassConst;
+use PhpParser\Node\Stmt\Const_ as ConstStmt;
+use PhpParser\Node\Stmt\Function_;
+use PhpParser\Node\Stmt\InlineHTML;
+use PhpParser\Node\Stmt\Interface_;
+use PhpParser\Node\Stmt\Property;
+use PhpParser\Node\Stmt\PropertyProperty;
+use PhpParser\Node\Stmt\Trait_;
+use PhpParser\Node\Stmt\UseUse;
+use PhpParser\NodeVisitor;
+
+/**
+ * Reflection class for a full file.
+ *
+ * @author Mike van Riel
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class FileReflector extends ReflectionAbstract implements NodeVisitor
+{
+ /** @var string An MD5 hashed representation of the contents of this file */
+ protected $hash;
+
+ /** @var string The contents of this file. */
+ protected $contents = '';
+
+ /** @var IncludeReflector[] */
+ protected $includes = array();
+
+ /** @var ConstantReflector[] */
+ protected $constants = array();
+
+ /** @var ClassReflector[] */
+ protected $classes = array();
+
+ /** @var TraitReflector[] */
+ protected $traits = array();
+
+ /** @var InterfaceReflector[] */
+ protected $interfaces = array();
+
+ /** @var FunctionReflector[] */
+ protected $functions = array();
+
+ /** @var string The name of the file associated with this reflection object. */
+ protected $filename = '';
+
+ /** @var DocBlock */
+ protected $doc_block;
+
+ /** @var string The package name that should be used if none is present in the file */
+ protected $default_package_name = 'Default';
+
+ /** @var string[] A list of markers contained in this file. */
+ protected $markers = array();
+
+ /** @var string[] A list of errors during processing */
+ protected $parse_markers = array();
+
+ /** @var string[] A list of all marker types to search for in this file. */
+ protected $marker_terms = array('TODO', 'FIXME');
+
+ /** @var Context */
+ protected $context;
+
+ /**
+ * Opens the file and retrieves its contents.
+ *
+ * During construction the given file is checked whether it is readable and
+ * if the $validate argument is true a PHP Lint action is executed to
+ * check whether the there are no parse errors.
+ *
+ * By default the Lint check is disabled because of the performance hit
+ * introduced by this action.
+ *
+ * If the validation checks out, the file's contents are read, converted to
+ * UTF-8 and the object is created from those contents.
+ *
+ * @param string $file Name of the file.
+ * @param boolean $validate Whether to check the file using PHP Lint.
+ * @param string $encoding The encoding of the file.
+ *
+ * @throws Exception\UnreadableFile If the filename is incorrect or
+ * the file cannot be opened
+ * @throws Exception\UnparsableFile If the file fails PHP lint checking
+ * (this can only happen when $validate is set to true)
+ */
+ public function __construct($file, $validate = false, $encoding = 'utf-8')
+ {
+ if (!is_string($file) || (!is_readable($file))) {
+ throw new Exception\UnreadableFile(
+ 'The given file should be a string, should exist on the filesystem and should be readable'
+ );
+ }
+
+ if ($validate) {
+ exec('php -l ' . escapeshellarg($file), $output, $result);
+ if ($result != 0) {
+ throw new Exception\UnparsableFile(
+ 'The given file could not be interpreted as it contains errors: '
+ . implode(PHP_EOL, $output)
+ );
+ }
+ }
+
+ $this->filename = $file;
+ $this->contents = file_get_contents($file);
+ $this->context = new Context();
+
+ if (strtolower($encoding) !== 'utf-8' && extension_loaded('iconv')) {
+ $this->contents = iconv(
+ strtolower($encoding),
+ 'utf-8//IGNORE//TRANSLIT',
+ $this->contents
+ );
+ }
+
+ // filemtime($file) is sometimes between 0.00001 and 0.00005 seconds
+ // faster but md5 is more accurate. It can also result in false
+ // positives or false negatives after copying or checking out a codebase.
+ $this->hash = md5($this->contents);
+ }
+
+ public function process()
+ {
+ // with big fluent interfaces it can happen that PHP-Parser's Traverser
+ // exceeds the 100 recursions limit; we set it to 10000 to be sure.
+ ini_set('xdebug.max_nesting_level', 10000);
+
+ $traverser = new Traverser();
+ $traverser->addVisitor($this);
+ $traverser->traverse($this->contents);
+
+ $this->scanForMarkers();
+ }
+
+ /**
+ * @return ClassReflector[]
+ */
+ public function getClasses()
+ {
+ return $this->classes;
+ }
+
+ /**
+ * @return TraitReflector[]
+ */
+ public function getTraits()
+ {
+ return $this->traits;
+ }
+
+ /**
+ * @return ConstantReflector[]
+ */
+ public function getConstants()
+ {
+ return $this->constants;
+ }
+
+ /**
+ * @return FunctionReflector[]
+ */
+ public function getFunctions()
+ {
+ return $this->functions;
+ }
+
+ /**
+ * @return IncludeReflector[]
+ */
+ public function getIncludes()
+ {
+ return $this->includes;
+ }
+
+ /**
+ * @return InterfaceReflector[]
+ */
+ public function getInterfaces()
+ {
+ return $this->interfaces;
+ }
+
+ public function beforeTraverse(array $nodes)
+ {
+ $node = null;
+ $key = 0;
+ foreach ($nodes as $k => $n) {
+ if (!$n instanceof InlineHTML) {
+ $node = $n;
+ $key = $k;
+ break;
+ }
+ }
+
+ if ($node) {
+ $comments = (array) $node->getAttribute('comments');
+
+ // remove non-DocBlock comments
+ $comments = array_values(
+ array_filter(
+ $comments,
+ function ($comment) {
+ return $comment instanceof Doc;
+ }
+ )
+ );
+
+ if (!empty($comments)) {
+ try {
+ $docblock = new DocBlock(
+ (string) $comments[0],
+ null,
+ new Location($comments[0]->getLine())
+ );
+
+ // the first DocBlock in a file documents the file if
+ // * it precedes another DocBlock or
+ // * it contains a @package tag and doesn't precede a class
+ // declaration or
+ // * it precedes a non-documentable element (thus no include,
+ // require, class, function, define, const)
+ if (count($comments) > 1
+ || (!$node instanceof Class_
+ && !$node instanceof Interface_
+ && $docblock->hasTag('package'))
+ || !$this->isNodeDocumentable($node)
+ ) {
+ $this->doc_block = $docblock;
+
+ // remove the file level DocBlock from the node's comments
+ array_shift($comments);
+ }
+ } catch (\Exception $e) {
+ $this->log($e->getMessage(), LogLevel::CRITICAL);
+ }
+ }
+
+ // always update the comments attribute so that standard comments
+ // do not stop DocBlock from being attached to an element
+ $node->setAttribute('comments', $comments);
+ $nodes[$key] = $node;
+ }
+
+ if (class_exists('phpDocumentor\Event\Dispatcher')) {
+ Dispatcher::getInstance()->dispatch(
+ 'reflection.docblock-extraction.post',
+ PostDocBlockExtractionEvent
+ ::createInstance($this)->setDocblock($this->doc_block)
+ );
+ }
+
+ return $nodes;
+ }
+
+ /**
+ * Checks whether the given node is recogized by phpDocumentor as a
+ * documentable element.
+ *
+ * The following elements are recognized:
+ *
+ * - Trait
+ * - Class
+ * - Interface
+ * - Class constant
+ * - Class method
+ * - Property
+ * - Include/Require
+ * - Constant, both const and define
+ * - Function
+ *
+ * @param Node $node
+ *
+ * @return bool
+ */
+ protected function isNodeDocumentable(Node $node)
+ {
+ return ($node instanceof Class_)
+ || ($node instanceof Interface_)
+ || ($node instanceof ClassConst)
+ || ($node instanceof ClassMethod)
+ || ($node instanceof ConstStmt)
+ || ($node instanceof Function_)
+ || ($node instanceof Property)
+ || ($node instanceof PropertyProperty)
+ || ($node instanceof Trait_)
+ || ($node instanceof Include_)
+ || ($node instanceof FuncCall
+ && ($node->name instanceof Name)
+ && $node->name == 'define');
+ }
+
+ public function enterNode(Node $node)
+ {
+ }
+
+ public function getName()
+ {
+ return $this->filename;
+ }
+
+ public function getFilename()
+ {
+ return $this->filename;
+ }
+
+ public function getHash()
+ {
+ return $this->hash;
+ }
+
+ public function getDocBlock()
+ {
+ return $this->doc_block;
+ }
+
+ public function getLineNumber()
+ {
+ return 0;
+ }
+
+ public function getDefaultPackageName()
+ {
+ return $this->default_package_name;
+ }
+
+ /**
+ * Adds a marker to scan the contents of this file for.
+ *
+ * @param string $name The Marker term, e.g. FIXME or TODO.
+ *
+ * @return void
+ */
+ public function addMarker($name)
+ {
+ $this->marker_terms[] = $name;
+ }
+
+ /**
+ * Sets a list of markers to search for.
+ *
+ * @param string[] $markers A list of marker terms to scan for.
+ *
+ * @see phpDocumentor\Reflection\FileReflector::addMarker()
+ *
+ * @return void
+ */
+ public function setMarkers(array $markers)
+ {
+ $this->marker_terms = array();
+
+ foreach ($markers as $marker) {
+ $this->addMarker($marker);
+ }
+ }
+
+ public function getMarkers()
+ {
+ return $this->markers;
+ }
+
+ /**
+ * Adds a parse error to the system
+ *
+ * @param LogEvent $data Contains the type,
+ * message, line and code element.
+ *
+ * @return void
+ */
+ public function addParserMarker($data)
+ {
+ $this->parse_markers[] = array(
+ $data->getType(),
+ $data->getMessage(),
+ $data->getLine(),
+ $data->getCode()
+ );
+ }
+
+ /**
+ * Scans the file for markers and records them in the markers property.
+ *
+ * @see getMarkers()
+ *
+ * @todo this method may incur a performance penalty while the AST also
+ * contains the comments. This method should be replaced by a piece of
+ * code that interprets the comments in the AST.
+ * This has not been done since that may be an extensive refactoring (each
+ * PhpParser\Node* contains a 'comments' attribute and must thus recursively
+ * be discovered)
+ *
+ * @return void
+ */
+ public function scanForMarkers()
+ {
+ // find all markers, get the entire file and check for marker terms.
+ $marker_data = array();
+ foreach (explode("\n", $this->contents) as $line_number => $line) {
+ preg_match_all(
+ '~//[\s]*(' . implode('|', $this->marker_terms) . ')\:?[\s]*(.*)~',
+ $line,
+ $matches,
+ PREG_SET_ORDER
+ );
+ foreach ($matches as &$match) {
+ $match[3] = $line_number + 1;
+ }
+ $marker_data = array_merge($marker_data, $matches);
+ }
+
+ // store marker results and remove first entry (entire match),
+ // this results in an array with 2 entries:
+ // marker name and content
+ $this->markers = $marker_data;
+ foreach ($this->markers as &$marker) {
+ array_shift($marker);
+ }
+ }
+
+ public function getParseErrors()
+ {
+ return $this->parse_markers;
+ }
+
+ public function getNamespace()
+ {
+ return $this->context->getNamespace();
+ }
+
+ public function getNamespaceAliases()
+ {
+ return $this->context->getNamespaceAliases();
+ }
+
+ public function getContents()
+ {
+ return $this->contents;
+ }
+
+ public function setDefaultPackageName($default_package_name)
+ {
+ $this->default_package_name = $default_package_name;
+ }
+
+ public function setFilename($filename)
+ {
+ $this->filename = $filename;
+ }
+
+ public function leaveNode(Node $node)
+ {
+ $prettyPrinter = new PrettyPrinter;
+
+ switch (get_class($node)) {
+ case 'PhpParser\Node\Stmt\Use_':
+ /** @var \PhpParser\Node\Stmt\UseUse $use */
+ foreach ($node->uses as $use) {
+ $this->context->setNamespaceAlias(
+ $use->alias,
+ implode('\\', $use->name->parts)
+ );
+ }
+ break;
+ case 'PhpParser\Node\Stmt\Namespace_':
+ $this->context->setNamespace(
+ isset($node->name) && ($node->name) ? implode('\\', $node->name->parts) : ''
+ );
+ break;
+ case 'PhpParser\Node\Stmt\Class_':
+ $class = new ClassReflector($node, $this->context);
+ $class->parseSubElements();
+ $this->classes[] = $class;
+ break;
+ case 'PhpParser\Node\Stmt\Trait_':
+ $trait = new TraitReflector($node, $this->context);
+ $trait->parseSubElements();
+ $this->traits[] = $trait;
+ break;
+ case 'PhpParser\Node\Stmt\Interface_':
+ $interface = new InterfaceReflector($node, $this->context);
+ $interface->parseSubElements();
+ $this->interfaces[] = $interface;
+ break;
+ case 'PhpParser\Node\Stmt\Function_':
+ $function = new FunctionReflector($node, $this->context);
+ $this->functions[] = $function;
+ break;
+ case 'PhpParser\Node\Stmt\Const_':
+ foreach ($node->consts as $constant) {
+ $reflector = new ConstantReflector(
+ $node,
+ $this->context,
+ $constant
+ );
+ $this->constants[] = $reflector;
+ }
+ break;
+ case 'PhpParser\Node\Expr\FuncCall':
+ if (($node->name instanceof Name)
+ && ($node->name == 'define')
+ && isset($node->args[0])
+ && isset($node->args[1])
+ ) {
+ // transform the first argument of the define function call into a constant name
+ $name = str_replace(
+ array('\\\\', '"', "'"),
+ array('\\', '', ''),
+ trim($prettyPrinter->prettyPrintExpr($node->args[0]->value), '\'')
+ );
+ $nameParts = explode('\\', $name);
+ $shortName = end($nameParts);
+
+ $constant = new Const_($shortName, $node->args[1]->value, $node->getAttributes());
+ $constant->namespacedName = new Name($name);
+
+ $constant_statement = new ConstStmt(array($constant));
+ $constant_statement->setAttribute('comments', array($node->getDocComment()));
+ $this->constants[] = new ConstantReflector($constant_statement, $this->context, $constant);
+ }
+ break;
+ case 'PhpParser\Node\Expr\Include_':
+ $include = new IncludeReflector($node, $this->context);
+ $this->includes[] = $include;
+ break;
+ }
+ }
+
+ public function afterTraverse(array $nodes)
+ {
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FunctionReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FunctionReflector.php
new file mode 100644
index 0000000..95a673a
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FunctionReflector.php
@@ -0,0 +1,76 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Reflection\BaseReflector;
+use phpDocumentor\Reflection\DocBlock\Context;
+use PhpParser\Node\Param;
+use PhpParser\Node\Stmt;
+use PhpParser\Node\Stmt\Function_;
+
+/**
+ * Provides Static Reflection for functions.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class FunctionReflector extends BaseReflector
+{
+ /** @var \PhpParser\Node\Stmt\Function_ */
+ protected $node;
+
+ /** @var FunctionReflector\ArgumentReflector[] */
+ protected $arguments = array();
+
+ /**
+ * Initializes the reflector using the function statement object of
+ * PHP-Parser.
+ *
+ * @param \PhpParser\Node\Stmt $node Function object coming from PHP-Parser.
+ * @param Context $context The context in which the node occurs.
+ */
+ public function __construct(\PhpParser\Node\Stmt $node, Context $context)
+ {
+ parent::__construct($node, $context);
+
+ /** @var \PhpParser\Node\Param $param */
+ foreach ($node->params as $param) {
+ $reflector = new FunctionReflector\ArgumentReflector(
+ $param,
+ $context
+ );
+ $this->arguments[$reflector->getName()] = $reflector;
+ }
+ }
+
+ /**
+ * Checks whether the function returns a value by reference.
+ *
+ * @return bool TRUE if the return value is by reference, FALSE otherwise.
+ */
+ public function isByRef()
+ {
+ return $this->node->byRef;
+ }
+
+ /**
+ * Returns a list of Argument objects.
+ *
+ * @return FunctionReflector\ArgumentReflector[]
+ */
+ public function getArguments()
+ {
+ return $this->arguments;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FunctionReflector/ArgumentReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FunctionReflector/ArgumentReflector.php
new file mode 100644
index 0000000..0f1bfcb
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/FunctionReflector/ArgumentReflector.php
@@ -0,0 +1,75 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\FunctionReflector;
+
+use phpDocumentor\Reflection\BaseReflector;
+use PhpParser\Node\Param;
+
+class ArgumentReflector extends BaseReflector
+{
+ /** @var Param */
+ protected $node;
+
+ /**
+ * Checks whether the argument is passed by reference.
+ *
+ * @return bool TRUE if the argument is by reference, FALSE otherwise.
+ */
+ public function isByRef()
+ {
+ return $this->node->byRef;
+ }
+
+ /**
+ * Returns the default value or null is none is set.
+ *
+ * @return string|null
+ */
+ public function getDefault()
+ {
+ $result = null;
+ if ($this->node->default) {
+ $result = $this->getRepresentationOfValue($this->node->default);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the typehint, or null if none is set.
+ *
+ * @return string|null
+ */
+ public function getType()
+ {
+ if ( $this->node->type instanceof \PhpParser\Node\NullableType ) {
+ return "?{$this->node->type->type}";
+ }
+
+ $type = (string) $this->node->type;
+
+ // in case of the callable of array keyword; do not prefix with a \
+ if ($type == 'callable' || $type == 'array'
+ || $type == 'self' || $type == '$this'
+ ) {
+ return $type;
+ }
+
+ return $type ? '\\'.$type : '';
+ }
+
+ public function getName()
+ {
+ return '$'.parent::getName();
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/IncludeReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/IncludeReflector.php
new file mode 100644
index 0000000..4360366
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/IncludeReflector.php
@@ -0,0 +1,74 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use Exception;
+use PhpParser\Node\Expr\Include_;
+
+class IncludeReflector extends BaseReflector
+{
+ /** @var Include_ */
+ protected $node;
+
+ /**
+ * Returns the type of this include.
+ *
+ * Valid types are:
+ * - Include
+ * - Include Once
+ * - Require
+ * - Require Once
+ *
+ * @throws Exception if the include is of an unknown type
+ *
+ * @return string
+ */
+ public function getType()
+ {
+ switch ($this->node->type) {
+ case Include_::TYPE_INCLUDE:
+ return 'Include';
+ case Include_::TYPE_INCLUDE_ONCE:
+ return 'Include Once';
+ case Include_::TYPE_REQUIRE:
+ return 'Require';
+ case Include_::TYPE_REQUIRE_ONCE:
+ return 'Require Once';
+ default:
+ throw new Exception(
+ 'Unknown include type detected: '.$this->node->type
+ );
+ }
+ }
+
+ public function getShortName()
+ {
+ if ( ! isset( $this->node->expr->value ) ) {
+ $name = [];
+ foreach ( $this->node->expr->getSubNodeNames() as $part ) {
+ $thing = $this->node->expr->{$part};
+
+ $name[] = ( is_object( $thing ) && method_exists( $thing, 'getName' ) )
+ ? $thing->getName()
+ : ( ( is_array( $thing )
+ ? array_key_exists( 'value', $thing )
+ : property_exists( $thing, 'value' )
+ )
+ ? $thing->value
+ : '(unknown)' );
+ }
+ $name = implode( ' . ', $name );
+ }
+ return (string) $this->node->expr->value;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/InterfaceReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/InterfaceReflector.php
new file mode 100644
index 0000000..e32bdc0
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/InterfaceReflector.php
@@ -0,0 +1,118 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\Interface_;
+
+class InterfaceReflector extends BaseReflector
+{
+ /** @var Interface_|\PhpParser\Node\Stmt\Class_ */
+ protected $node;
+
+ /**
+ * @var ClassReflector\ConstantReflector[]
+ */
+ protected $constants = array();
+ /**
+ * @var ClassReflector\PropertyReflector[]
+ */
+ protected $properties = array();
+ /**
+ * @var ClassReflector\MethodReflector[]
+ */
+ protected $methods = array();
+
+ public function parseSubElements()
+ {
+ foreach ($this->node->stmts as $stmt) {
+ switch (get_class($stmt)) {
+ case 'PhpParser\Node\Stmt\Property':
+ foreach ($stmt->props as $property) {
+ $this->properties[] = new ClassReflector\PropertyReflector(
+ $stmt,
+ $this->context,
+ $property
+ );
+ }
+ break;
+ case 'PhpParser\Node\Stmt\ClassMethod':
+ $this->methods[strtolower($stmt->name)] = new ClassReflector\MethodReflector(
+ $stmt,
+ $this->context
+ );
+ break;
+ case 'PhpParser\Node\Stmt\ClassConst':
+ foreach ($stmt->consts as $constant) {
+ $this->constants[] = new ClassReflector\ConstantReflector(
+ $stmt,
+ $this->context,
+ $constant
+ );
+ }
+ break;
+ }
+ }
+ }
+
+ public function getParentInterfaces()
+ {
+ $names = array();
+ if ($this->node instanceof Interface_
+ && $this->node->extends
+ ) {
+ /** @var Name */
+ foreach ($this->node->extends as $node) {
+ $names[] = '\\'.(string) $node;
+ }
+ }
+
+ return $names;
+ }
+
+ /**
+ * @return ClassReflector\ConstantReflector[]
+ */
+ public function getConstants()
+ {
+ return $this->constants;
+ }
+
+ /**
+ * @return ClassReflector\PropertyReflector[]
+ */
+ public function getProperties()
+ {
+ return $this->properties;
+ }
+
+ /**
+ * @return ClassReflector\MethodReflector[]
+ */
+ public function getMethods()
+ {
+ return $this->methods;
+ }
+
+ /**
+ * @param string $name the method name
+ * @return ClassReflector\MethodReflector|null
+ */
+ public function getMethod($name)
+ {
+ $name = strtolower($name);
+
+ return isset($this->methods[$name]) ? $this->methods[$name] : null;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Lexer.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Lexer.php
new file mode 100644
index 0000000..09a4ff0
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Lexer.php
@@ -0,0 +1,74 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Lexer as BaseLexer;
+use PhpParser\Parser;
+
+/**
+ * Custom lexer for phpDocumentor.
+ *
+ * phpDocumentor has a custom Lexer for PHP-Parser because it needs
+ * unmodified value for Scalar variables instead of an interpreted version.
+ *
+ * If the interpreted version was to be used then the XML interpretation would
+ * fail because of special characters.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class Lexer extends BaseLexer
+{
+ /**
+ * Retrieves the next token and determines the associated attributes and
+ * returns the token id.
+ *
+ * @param string $value
+ * @param string[] $startAttributes
+ * @param string[] $endAttributes
+ *
+ * @return int
+ */
+ public function getNextToken(
+ &$value = null,
+ &$startAttributes = null,
+ &$endAttributes = null
+ ) {
+ $tokenId = parent::getNextToken($value, $startAttributes, $endAttributes);
+
+ if ($this->isTokenScalar($tokenId)) {
+ // store original value because the value itself will be interpreted
+ // by PHP_Parser and we want the unformatted value
+ $endAttributes['originalValue'] = $value;
+ }
+
+ return $tokenId;
+ }
+
+ /**
+ * Returns whether the given token id is a scalar that will be interpreted
+ * by PHP-Parser.
+ *
+ * @param int $tokenId The id to check, must match a \PhpParser_Parser::T_*
+ * constant.
+ *
+ * @return bool
+ */
+ protected function isTokenScalar($tokenId)
+ {
+ return $tokenId == Parser::T_CONSTANT_ENCAPSED_STRING
+ || $tokenId == Parser::T_LNUMBER
+ || $tokenId == Parser::T_DNUMBER;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/PrettyPrinter.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/PrettyPrinter.php
new file mode 100644
index 0000000..c99f456
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/PrettyPrinter.php
@@ -0,0 +1,57 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Node\Scalar\String_;
+
+/**
+ * Custom PrettyPrinter for phpDocumentor.
+ *
+ * phpDocumentor has a custom PrettyPrinter for PHP-Parser because it needs the
+ * unmodified value for Scalar variables instead of an interpreted version.
+ *
+ * If the interpreted version was to be used then the XML interpretation would
+ * fail because of special characters.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class PrettyPrinter extends \PhpParser\PrettyPrinter\Standard
+{
+ /**
+ * Converts the string into it's original representation without converting
+ * the special character combinations.
+ *
+ * This method is overridden from the original Zend Pretty Printer because
+ * the original returns the strings as interpreted by PHP-Parser.
+ * Since we do not want such conversions we take the original that is
+ * injected by our own custom Lexer.
+ *
+ * @param String $node The node to return a string
+ * representation of.
+ *
+ * @see Lexer where the originalValue is injected.
+ *
+ * @return string
+ */
+ public function pScalar_String(String_ $node)
+ {
+ if (method_exists($this, 'pSafe')) {
+ return $this->pSafe($node->getAttribute('originalValue'));
+ }
+
+ return $this->pNoIndent($node->getAttribute('originalValue'));
+ }
+
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ReflectionAbstract.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ReflectionAbstract.php
new file mode 100644
index 0000000..871ed3a
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/ReflectionAbstract.php
@@ -0,0 +1,72 @@
+
+ * @copyright 2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Event\DebugEvent;
+use phpDocumentor\Event\Dispatcher;
+use phpDocumentor\Event\LogEvent;
+
+/**
+ * Provides basic event logging and dispatching for every reflection class.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+abstract class ReflectionAbstract
+{
+ /**
+ * The context (namespace, aliases) for the reflection.
+ *
+ * @var \phpDocumentor\Reflection\DocBlock\Context
+ */
+ protected $context = null;
+
+ /**
+ * Dispatches a logging request.
+ *
+ * @param string $message The message to log.
+ * @param int $priority The logging priority, the lower,
+ * the more important. Ranges from 1 to 7
+ *
+ * @return void
+ */
+ public function log($message, $priority = 6)
+ {
+ if (class_exists('phpDocumentor\Event\Dispatcher')) {
+ Dispatcher::getInstance()->dispatch(
+ 'system.log',
+ LogEvent::createInstance($this)
+ ->setMessage($message)->setPriority($priority)
+ );
+ }
+ }
+
+ /**
+ * Dispatches a logging request to log a debug message.
+ *
+ * @param string $message The message to log.
+ *
+ * @return void
+ */
+ public function debug($message)
+ {
+ if (class_exists('phpDocumentor\Event\Dispatcher')) {
+ Dispatcher::getInstance()->dispatch(
+ 'system.debug',
+ DebugEvent::createInstance($this)
+ ->setMessage($message)
+ );
+ }
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/TraitReflector.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/TraitReflector.php
new file mode 100644
index 0000000..1c5a46c
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/TraitReflector.php
@@ -0,0 +1,19 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+class TraitReflector extends ClassReflector
+{
+ /** @var \PhpParser\Node\Stmt\Trait_ */
+ protected $node;
+}
diff --git a/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Traverser.php b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Traverser.php
new file mode 100644
index 0000000..abcd8bb
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/src/phpDocumentor/Reflection/Traverser.php
@@ -0,0 +1,101 @@
+
+ * @copyright 2010-2012 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Error;
+use PhpParser\NodeVisitor\NameResolver;
+use PhpParser\Parser;
+use PhpParser\ParserFactory;
+use PhpParser\NodeTraverser;
+use PhpParser\NodeVisitor;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * The source code traverser that scans the given source code and transforms
+ * it into tokens.
+ *
+ * @author Mike van Riel
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class Traverser
+{
+ /**
+ * List of visitors to apply upon traversing.
+ *
+ * @see traverse()
+ *
+ * @var \PhpParser\NodeVisitorAbstract[]
+ */
+ public $visitors = array();
+
+ /**
+ * Traverses the given contents and builds an AST.
+ *
+ * @param string $contents The source code of the file that is to be scanned
+ *
+ * @return void
+ */
+ public function traverse($contents)
+ {
+ try {
+ $this->createTraverser()->traverse(
+ $this->createParser()->parse($contents)
+ );
+ } catch (Error $e) {
+ echo 'Parse Error: ', $e->getMessage();
+ }
+ }
+
+ /**
+ * Adds a visitor object to the traversal process.
+ *
+ * With visitors it is possible to extend the traversal process and
+ * modify the found tokens.
+ *
+ * @param \PhpParser\NodeVisitor $visitor
+ *
+ * @return void
+ */
+ public function addVisitor(\PhpParser\NodeVisitor $visitor)
+ {
+ $this->visitors[] = $visitor;
+ }
+
+ /**
+ * Creates a parser object using our own Lexer.
+ *
+ * @return Parser
+ */
+ protected function createParser()
+ {
+ return (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
+ }
+
+ /**
+ * Creates a new traverser object and adds visitors.
+ *
+ * @return NodeTraverser
+ */
+ protected function createTraverser()
+ {
+ $node_traverser = new NodeTraverser(true);
+ $node_traverser->addVisitor(new NameResolver());
+
+ foreach ($this->visitors as $visitor) {
+ $node_traverser->addVisitor($visitor);
+ }
+
+ return $node_traverser;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/BaseReflectorMock.php b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/BaseReflectorMock.php
new file mode 100644
index 0000000..f5aaf06
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/BaseReflectorMock.php
@@ -0,0 +1,51 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Node\Expr;
+
+/**
+ * Class for testing base reflector.
+ *
+ * Extends the baseReflector so properties and abstract methods can be mocked,
+ * and therefore tested.
+ *
+ * @author Erik Baars
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class BaseReflectorMock extends BaseReflector
+{
+ /**
+ * Overload method so we can test the protected method
+ *
+ * @param Expr $value
+ *
+ * @return string
+ */
+ public function getRepresentationOfValueMock(
+ Expr $value = null
+ ) {
+ return parent::getRepresentationOfValue($value);
+ }
+
+ /**
+ * @param $val
+ *
+ * @return void
+ */
+ public function setPrettyPrinter($val)
+ {
+ self::$prettyPrinter = $val;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/ClassReflectorMock.php b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/ClassReflectorMock.php
new file mode 100644
index 0000000..a44314b
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/ClassReflectorMock.php
@@ -0,0 +1,31 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+/**
+ * Class for testing ClassReflector.
+ *
+ * Extends the ClassReflector so properties and abstract methods can be mocked,
+ * and therefore tested.
+ *
+ * @author Erik Baars
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class ClassReflectorMock extends ClassReflector
+{
+ public function setTraits(array $val)
+ {
+ $this->traits = $val;
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeExprMock.php b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeExprMock.php
new file mode 100644
index 0000000..777ec56
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeExprMock.php
@@ -0,0 +1,29 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Node\Expr;
+
+/**
+ * Class for testing PhpParser_Node_Expr.
+ *
+ * Extends the PhpParser_Node_Expr so properties and abstract methods can be mocked,
+ * and therefore tested.
+ *
+ * @author Vasil Rangelov
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class NodeExprMock extends Expr
+{
+}
diff --git a/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeStmtMock.php b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeStmtMock.php
new file mode 100644
index 0000000..c085741
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeStmtMock.php
@@ -0,0 +1,40 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Node\Stmt;
+
+/**
+ * Class for testing PhpParser_Node_Stmt.
+ *
+ * Extends the PhpParser_Node_Stmt so properties and abstract methods can be mocked,
+ * and therefore tested.
+ *
+ * @author Erik Baars
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class NodeStmtMock extends \PhpParser\Node\Stmt
+{
+ public $name = null;
+
+ public function setName($val)
+ {
+ $this->name = $val;
+ }
+
+ public function __toString()
+ {
+ return 'testNodeMock';
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeStmtMock2.php b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeStmtMock2.php
new file mode 100644
index 0000000..7a32cec
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/tests/mocks/phpDocumentor/Reflection/NodeStmtMock2.php
@@ -0,0 +1,34 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Node\Stmt;
+
+/**
+ * Class for testing PhpParser_Node_Stmt.
+ *
+ * Extends the PhpParser_Node_Stmt so properties and abstract methods can be mocked,
+ * and therefore tested.
+ *
+ * @author Erik Baars
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class NodeStmtMock2 extends Stmt
+{
+ public $type = null;
+
+ public $implements = array();
+
+ public $extends = null;
+}
diff --git a/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/BaseReflectorTest.php b/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/BaseReflectorTest.php
new file mode 100644
index 0000000..abe2ad2
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/BaseReflectorTest.php
@@ -0,0 +1,272 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Reflection\DocBlock\Context;
+use PHPUnit_Framework_TestCase;
+
+/**
+ * Class for testing base reflector.
+ *
+ * @author Erik Baars
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class BaseReflectorTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * Tests the setNameSpace method
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::setNameSpace
+ * @covers \phpDocumentor\Reflection\BaseReflector::getNameSpace
+ *
+ * @return void
+ */
+ public function testSetNameSpace()
+ {
+ /** @var BaseReflector $base_reflector */
+ $base_reflector = new BaseReflectorMock(
+ $this->getMockBuilder('\PhpParser\Node\Stmt')->disableOriginalConstructor()->getMock(),
+ new Context()
+ );
+ $base_reflector->setNamespace('namespace_name');
+
+ $this->assertEquals('namespace_name', $base_reflector->getNameSpace());
+ }
+
+ /**
+ * Tests the setNameSpace method when an invalid argument is passed
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::setNameSpace
+ *
+ * @expectedException \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function testSetNameSpaceInvalidArgument()
+ {
+ /** @var BaseReflector $base_reflector */
+ $base_reflector = new BaseReflectorMock(
+ $this->getMockBuilder('\PhpParser\Node\Stmt')->disableOriginalConstructor()->getMock(),
+ new Context()
+ );
+ $base_reflector->setNamespace(null);
+ }
+
+ /**
+ * Tests the getDocblock method
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::getDocBlock
+ *
+ * @return void
+ */
+ public function testGetDocBlock()
+ {
+ $this->markTestIncomplete();
+ }
+
+ /**
+ * Tests the getName method
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::getName
+ *
+ * @return void
+ */
+ public function testGetName()
+ {
+ $this->markTestIncomplete();
+ }
+
+ /**
+ * Tests the getShortName method
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::getShortName
+ *
+ * @return void
+ */
+ public function testGetShortName()
+ {
+ $node = new NodeStmtMock();
+ $base_reflector = new BaseReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $this->assertEquals($node->__toString(), $base_reflector->getShortName());
+
+ $node->setName('test_name');
+
+ $this->assertEquals('test_name', $base_reflector->getShortName());
+ }
+
+ /**
+ * Tests the getNameSpaceAlias method
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::getNamespaceAliases
+ * @covers \phpDocumentor\Reflection\BaseReflector::setNamespaceAliases
+ *
+ * @return void
+ */
+ public function testGetNamespaceAliases()
+ {
+ $node = new NodeStmtMock();
+ $base_reflector = new BaseReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $this->assertEquals(array(), $base_reflector->getNamespaceAliases());
+
+ $base_reflector->setNamespaceAliases(
+ array('test_namespace', 'test_namespace_2')
+ );
+
+ $this->assertCount(2, $base_reflector->getNamespaceAliases());
+ $this->assertEquals(
+ array('\test_namespace', '\test_namespace_2'),
+ $base_reflector->getNamespaceAliases()
+ );
+ }
+
+ /**
+ * Tests the getNameSpaceAlias method
+ *
+ * Tests the following scenarios:
+ * - no namespace aliases set yet
+ * - overwrite the current namespace alias
+ * - add another namespace alias without overwriting the already set alias
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::getNamespaceAliases
+ * @covers \phpDocumentor\Reflection\BaseReflector::setNamespaceAlias
+ *
+ * @return void
+ */
+ public function testsetNamespaceAlias()
+ {
+ $node = new NodeStmtMock();
+
+ $base_reflector = new BaseReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $this->assertEquals(array(), $base_reflector->getNamespaceAliases());
+
+ $base_reflector->setNamespaceAlias('test_alias', 'test_namespace');
+
+ $namespace_aliases = $base_reflector->getNamespaceAliases();
+ $this->assertCount(1, $namespace_aliases);
+ $this->assertArrayHasKey('test_alias', $namespace_aliases);
+ $this->assertEquals('\test_namespace', $namespace_aliases['test_alias']);
+
+ $base_reflector->setNamespaceAlias('test_alias', 'test_namespace_2');
+
+ $namespace_aliases = $base_reflector->getNamespaceAliases();
+ $this->assertCount(1, $namespace_aliases);
+ $this->assertArrayHasKey('test_alias', $namespace_aliases);
+ $this->assertEquals('\test_namespace_2', $namespace_aliases['test_alias']);
+
+ $base_reflector->setNamespaceAlias('test_alias2', 'test_namespace');
+
+ $namespace_aliases = $base_reflector->getNamespaceAliases();
+ $this->assertCount(2, $namespace_aliases);
+ $this->assertArrayHasKey('test_alias', $namespace_aliases);
+ $this->assertArrayHasKey('test_alias2', $namespace_aliases);
+ $this->assertEquals('\test_namespace_2', $namespace_aliases['test_alias']);
+ $this->assertEquals('\test_namespace', $namespace_aliases['test_alias2']);
+ }
+
+ /**
+ * Tests the getLinenumber method
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::getLinenumber
+ *
+ * @return void
+ */
+ public function testGetLinenumber()
+ {
+ $node = new NodeStmtMock();
+
+ $base_reflector = new BaseReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $this->assertEquals($node->getLine(), $base_reflector->getLinenumber());
+
+ $node->setLine(123);
+
+ $this->assertEquals(123, $base_reflector->getLinenumber());
+ }
+
+ /**
+ * Tests the setDefaultPackageName method
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::setDefaultPackageName
+ * @covers \phpDocumentor\Reflection\BaseReflector::getDefaultPackageName
+ *
+ * @return void
+ */
+ public function testSetDefaultPackageName()
+ {
+ $node = new NodeStmtMock();
+
+ $base_reflector = new BaseReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $this->assertInternalType(
+ 'string',
+ $base_reflector->getDefaultPackageName()
+ );
+ $this->assertEquals('', $base_reflector->getDefaultPackageName());
+
+ $base_reflector->setDefaultPackageName('test_name');
+
+ $this->assertEquals('test_name', $base_reflector->getDefaultPackageName());
+ }
+
+ /**
+ * Tests the setDefaultPackageName method
+ *
+ * @covers \phpDocumentor\Reflection\BaseReflector::getRepresentationOfValue
+ *
+ * @return void
+ */
+ public function testGetRepresentationOfValue()
+ {
+ $node = new NodeStmtMock();
+ $base_reflector = new BaseReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $this->assertEquals('', $base_reflector->getRepresentationOfValueMock(null));
+
+ $pretty_printer = $this->getMock(
+ '\phpDocumentor\Reflection\PrettyPrinter',
+ array('prettyPrintExpr')
+ );
+ $base_reflector->setPrettyPrinter($pretty_printer);
+ $pretty_printer
+ ->expects($this->once())
+ ->method('prettyPrintExpr')
+ ->will($this->returnValue('test_output'));
+
+ $this->assertEquals(
+ 'test_output',
+ $base_reflector->getRepresentationOfValueMock(new NodeExprMock())
+ );
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/ClassReflectorTest.php b/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/ClassReflectorTest.php
new file mode 100644
index 0000000..76b9b2b
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/ClassReflectorTest.php
@@ -0,0 +1,182 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Reflection\DocBlock\Context;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\ClassMethod;
+use PHPUnit_Framework_TestCase;
+
+/**
+ * Class for testing ClassReflector.
+ *
+ * @author Erik Baars
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class ClassReflectorTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * Tests the parseSubElements method
+ *
+ * @covers \phpDocumentor\Reflection\ClassReflector::parseSubElements
+ *
+ * @return void
+ */
+ public function testParseSubElements()
+ {
+ $this->markTestIncomplete();
+ }
+
+ /**
+ * Tests the parseSubElements method
+ *
+ * @covers \phpDocumentor\Reflection\ClassReflector::isAbstract
+ *
+ * @return void
+ */
+ public function testIsAbstract()
+ {
+ //$this->markTestSkipped();
+ $node = new NodeStmtMock2();
+ $class_reflector = new ClassReflector(
+ $node,
+ new Context()
+ );
+
+ $this->assertFalse($class_reflector->isAbstract());
+
+ $node->type = Class_::MODIFIER_ABSTRACT;
+ $this->assertTrue($class_reflector->isAbstract());
+ }
+
+ /**
+ * Tests the parseSubElements method
+ *
+ * @covers \phpDocumentor\Reflection\ClassReflector::isFinal
+ *
+ * @return void
+ */
+ public function testIsFinal()
+ {
+ $node = new NodeStmtMock2();
+ $class_reflector = new ClassReflector(
+ $node,
+ new Context()
+ );
+
+ $this->assertFalse($class_reflector->isFinal());
+
+ $node->type = Class_::MODIFIER_FINAL;
+ $this->assertTrue($class_reflector->isFinal());
+ }
+
+ /**
+ * Tests the parseSubElements method
+ *
+ * @covers \phpDocumentor\Reflection\ClassReflector::getTraits
+ *
+ * @return void
+ */
+ public function testGetTraits()
+ {
+ $node = new NodeStmtMock();
+ $class_reflector = new ClassReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $traits = $class_reflector->getTraits();
+ $this->assertInternalType('array', $traits);
+ $this->assertEmpty($traits);
+
+ $class_reflector->setTraits(array('trait1', 'trait2'));
+ $traits = $class_reflector->getTraits();
+
+ $this->assertCount(2, $traits);
+ $this->assertEquals('trait1', reset($traits));
+ }
+
+ /**
+ * Tests the parseSubElements method
+ *
+ * @covers \phpDocumentor\Reflection\ClassReflector::getParentClass
+ *
+ * @return void
+ */
+ public function testGetParentClass()
+ {
+ $node = new NodeStmtMock();
+ $class_reflector = new ClassReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $this->assertEquals('', $class_reflector->getParentClass());
+
+ $node->extends = 'dummy';
+
+ $this->assertEquals('\dummy', $class_reflector->getParentClass());
+ }
+
+ /**
+ * Tests the parseSubElements method
+ *
+ * @covers \phpDocumentor\Reflection\ClassReflector::getInterfaces
+ *
+ * @return void
+ */
+ public function testGetInterfaces()
+ {
+ $node = new NodeStmtMock();
+ $class_reflector = new ClassReflectorMock(
+ $node,
+ new Context()
+ );
+
+ $this->assertEquals(array(), $class_reflector->getInterfaces());
+
+ $node->implements = array('dummy');
+
+ $this->assertEquals(array('\dummy'), $class_reflector->getInterfaces());
+ }
+
+ /**
+ * Tests the getMethod method
+ *
+ * @covers \phpDocumentor\Reflection\ClassReflector::getMethod
+ *
+ * @return void
+ */
+ public function testGetMethod()
+ {
+ $node = new NodeStmtMock();
+ $node->stmts = array(new ClassMethod('someMethod'));
+ $class_reflector = new ClassReflectorMock(
+ $node,
+ new Context()
+ );
+
+ // Before parseSubElements
+ $this->assertNull($class_reflector->getMethod('someMethod'));
+
+ $class_reflector->parseSubElements();
+
+ // After parseSubElements
+ $this->assertInstanceOf(
+ '\phpDocumentor\Reflection\ClassReflector\MethodReflector',
+ $class_reflector->getMethod('someMethod')
+ );
+ $this->assertNull($class_reflector->getMethod('someOtherMethod'));
+ }
+}
diff --git a/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/PrettyPrinterTest.php b/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/PrettyPrinterTest.php
new file mode 100644
index 0000000..434be7c
--- /dev/null
+++ b/vendor-packages/phpdocumentor-reflection/tests/unit/phpDocumentor/Reflection/PrettyPrinterTest.php
@@ -0,0 +1,45 @@
+
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+namespace phpDocumentor\Reflection;
+
+use PhpParser\Node\Scalar\String_;
+use PHPUnit_Framework_TestCase;
+
+/**
+ * Class for testing the PrettyPrinter.
+ *
+ * @author Vasil Rangelov
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link http://phpdoc.org
+ */
+class PrettyPrinterTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @covers \phpDocumentor\Reflection\PrettyPrinter::pScalar_String
+ *
+ * @return void
+ */
+ public function testScalarStringPrinting()
+ {
+ $object = new PrettyPrinter();
+ $this->assertEquals(
+ 'Another value',
+ $object->pScalar_String(
+ new String_(
+ 'Value',
+ array('originalValue' => 'Another value')
+ )
+ )
+ );
+ }
+}