diff --git a/README.md b/README.md index 5a6a6f6..760f3ab 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ class User * * @var string */ - public $name; + public string $name; /** * @Filter\StripTags() @@ -41,7 +41,7 @@ class User * * @var string */ - public $email; + public string $email; } ?> diff --git a/composer.json b/composer.json index 0e19838..34a59fd 100644 --- a/composer.json +++ b/composer.json @@ -14,30 +14,24 @@ ], "require": { - "php": "^5.3.2 || ^7.0", + "php": "^7.4", "doctrine/annotations": "~1.1" }, + "require-dev": { + "doctrine/cache": "~1.3", + "phpunit/phpunit": "^9", + "laminas/laminas-filter": "^2.9", + "doctrine/coding-standard": "^7.0" + }, "autoload": { "psr-0": { "DMS": ["src","tests"] } }, - - "require-dev": { - "phpunit/phpunit": "~3.7", - "doctrine/cache": "~1.3", - "zendframework/zend-filter": "^2.0.3" - }, - + "suggest": { - "zendframework/zend-filter": "Use Zend Filters via DMS Filter" - }, - - "repositories": [ - { - "type": "composer", - "url": "https://packages.zendframework.com/" - } - ] + "laminas/laminas-filter": "Use Laminas Filters via DMS Filter", + "ext-mbstring": "for encoding safety" + } } diff --git a/composer.lock b/composer.lock index 6d4f9d3..da7f872 100644 --- a/composer.lock +++ b/composer.lock @@ -1,43 +1,43 @@ { "_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", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "hash": "abb987eb72310f03b2ce5ea363edc099", - "content-hash": "e236739287e67bb687329a15f8b806bb", + "content-hash": "4a5b5d1d6416984ded756b0c0e76ce57", "packages": [ { "name": "doctrine/annotations", - "version": "v1.2.7", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" + "reference": "b9d758e831c70751155c698c2f7df4665314a1cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", - "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/b9d758e831c70751155c698c2f7df4665314a1cb", + "reference": "b9d758e831c70751155c698c2f7df4665314a1cb", "shasum": "" }, "require": { "doctrine/lexer": "1.*", - "php": ">=5.3.2" + "ext-tokenizer": "*", + "php": "^7.1" }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^7.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.9.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Annotations\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" } }, "notification-url": "https://packagist.org/downloads/", @@ -45,6 +45,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -53,10 +57,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -73,34 +73,39 @@ "docblock", "parser" ], - "time": "2015-08-31 12:32:49" + "time": "2020-04-20T09:18:32+00:00" }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.2" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -108,58 +113,132 @@ "MIT" ], "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, { "name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com" }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ + "annotations", + "docblock", "lexer", - "parser" + "parser", + "php" ], - "time": "2014-09-09 13:34:57" + "time": "2019-10-30T14:39:59+00:00" } ], "packages-dev": [ + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.5.0", + "source": { + "type": "git", + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "e749410375ff6fb7a040a68878c656c2e610b132" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/e749410375ff6fb7a040a68878c656c2e610b132", + "reference": "e749410375ff6fb7a040a68878c656c2e610b132", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "php": "^5.3|^7", + "squizlabs/php_codesniffer": "^2|^3" + }, + "require-dev": { + "composer/composer": "*", + "phpcompatibility/php-compatibility": "^9.0", + "sensiolabs/security-checker": "^4.1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "time": "2018-10-26T13:21:45+00:00" + }, { "name": "doctrine/cache", - "version": "v1.6.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "f8af318d14bdb0eff0336795b428b547bd39ccb6" + "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/f8af318d14bdb0eff0336795b428b547bd39ccb6", - "reference": "f8af318d14bdb0eff0336795b428b547bd39ccb6", + "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", + "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", "shasum": "" }, "require": { - "php": "~5.5|~7.0" + "php": "~7.1" }, "conflict": { "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "phpunit/phpunit": "~4.8|~5.0", - "predis/predis": "~1.0", - "satooshi/php-coveralls": "~0.6" + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^6.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.9.x-dev" } }, "autoload": { @@ -172,6 +251,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -180,10 +263,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -193,406 +272,486 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", "keywords": [ + "abstraction", + "apcu", "cache", - "caching" + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" ], - "time": "2015-12-31 16:37:02" + "time": "2019-11-29T15:36:20+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "1.2.18", + "name": "doctrine/coding-standard", + "version": "7.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b" + "url": "https://github.com/doctrine/coding-standard.git", + "reference": "d8a60ec4da68025c42795b714f66e277dd3e11de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b", - "reference": "fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b", + "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/d8a60ec4da68025c42795b714f66e277dd3e11de", + "reference": "d8a60ec4da68025c42795b714f66e277dd3e11de", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": ">=1.3.0@stable", - "phpunit/php-text-template": ">=1.2.0@stable", - "phpunit/php-token-stream": ">=1.1.3,<1.3.0" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*@dev" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.0.5" + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "php": "^7.2", + "slevomat/coding-standard": "^6.0", + "squizlabs/php_codesniffer": "^3.5.3" }, - "type": "library", + "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "7.0.x-dev" } }, "autoload": { - "classmap": [ - "PHP/" - ] + "psr-4": { + "Doctrine\\Sniffs\\": "lib/Doctrine/Sniffs" + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Steve Müller", + "email": "st.mueller@dzh-online.de" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "The Doctrine Coding Standard is a set of PHPCS rules applied to all Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/coding-standard.html", "keywords": [ - "coverage", - "testing", - "xunit" + "checks", + "code", + "coding", + "cs", + "doctrine", + "rules", + "sniffer", + "sniffs", + "standard", + "style" ], - "time": "2014-09-02 10:13:14" + "time": "2019-12-11T07:59:21+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "1.4.1", + "name": "doctrine/instantiator", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ - "filesystem", - "iterator" + "constructor", + "instantiate" ], - "time": "2015-06-21 13:08:43" + "time": "2019-10-21T16:45:58+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "laminas/laminas-filter", + "version": "2.9.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/laminas/laminas-filter.git", + "reference": "3c4476e772a062cef7531c6793377ae585d89c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/3c4476e772a062cef7531c6793377ae585d89c82", + "reference": "3c4476e772a062cef7531c6793377ae585d89c82", "shasum": "" }, "require": { - "php": ">=5.3.3" + "laminas/laminas-stdlib": "^2.7.7 || ^3.1", + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-validator": "<2.10.1" + }, + "replace": { + "zendframework/zend-filter": "^2.9.2" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-crypt": "^3.2.1", + "laminas/laminas-servicemanager": "^2.7.8 || ^3.3", + "laminas/laminas-uri": "^2.6", + "pear/archive_tar": "^1.4.3", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "psr/http-factory": "^1.0" + }, + "suggest": { + "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", + "laminas/laminas-i18n": "Laminas\\I18n component for filters depending on i18n functionality", + "laminas/laminas-servicemanager": "Laminas\\ServiceManager component, for using the filter chain functionality", + "laminas/laminas-uri": "Laminas\\Uri component, for the UriNormalize filter", + "psr/http-factory-implementation": "psr/http-factory-implementation, for creating file upload instances when consuming PSR-7 in file upload filters" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.9.x-dev", + "dev-develop": "2.10.x-dev" + }, + "laminas": { + "component": "Laminas\\Filter", + "config-provider": "Laminas\\Filter\\ConfigProvider" + } + }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Laminas\\Filter\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Programmatically filter and normalize data and files", + "homepage": "https://laminas.dev", "keywords": [ - "template" + "filter", + "laminas" ], - "time": "2015-06-21 13:50:34" + "time": "2020-03-29T12:41:29+00:00" }, { - "name": "phpunit/php-timer", - "version": "1.0.7", + "name": "laminas/laminas-stdlib", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", - "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/2b18347625a2f06a1a485acfbc870f699dbe51c6", + "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6", "shasum": "" }, "require": { - "php": ">=5.3.3" + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^5.6 || ^7.0" + }, + "replace": { + "zendframework/zend-stdlib": "self.version" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" + } + }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Laminas\\Stdlib\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "SPL extensions, array utilities, error handlers, and more", + "homepage": "https://laminas.dev", "keywords": [ - "timer" + "laminas", + "stdlib" ], - "time": "2015-06-21 08:01:12" + "time": "2019-12-31T17:51:15+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "1.2.2", + "name": "laminas/laminas-zendframework-bridge", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" + "url": "https://github.com/laminas/laminas-zendframework-bridge.git", + "reference": "bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9", + "reference": "bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.0.x-dev", + "dev-develop": "1.1.x-dev" + }, + "laminas": { + "module": "Laminas\\ZendFrameworkBridge" } }, "autoload": { - "classmap": [ - "PHP/" - ] + "files": [ + "src/autoload.php" + ], + "psr-4": { + "Laminas\\ZendFrameworkBridge\\": "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": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "description": "Alias legacy ZF class names to Laminas Project equivalents.", "keywords": [ - "tokenizer" + "ZendFramework", + "autoloading", + "laminas", + "zf" ], - "time": "2014-03-03 05:10:30" + "time": "2020-04-03T16:01:00+00:00" }, { - "name": "phpunit/phpunit", - "version": "3.7.38", + "name": "myclabs/deep-copy", + "version": "1.9.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/38709dc22d519a3d1be46849868aa2ddf822bcf6", - "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpunit/php-code-coverage": "~1.2", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.1", - "phpunit/php-timer": "~1.0", - "phpunit/phpunit-mock-objects": "~1.2", - "symfony/yaml": "~2.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { - "pear-pear.php.net/pear": "1.9.4" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, - "suggest": { - "phpunit/php-invoker": "~1.1" + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, - "bin": [ - "composer/bin/phpunit" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2020-01-17T21:11:47+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.7.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "classmap": [ - "PHPUnit/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], "license": [ "BSD-3-Clause" ], "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", - "role": "lead" + "role": "Developer" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2014-10-17 09:04:17" + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "1.2.3", + "name": "phar-io/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875" + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5794e3c5c5ba0fb037b11d8151add2a07fa82875", - "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-text-template": ">=1.1.1@stable" - }, - "suggest": { - "ext-soap": "*" + "php": "^5.6 || ^7.0" }, "type": "library", "autoload": { "classmap": [ - "PHPUnit/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2013-01-13 10:24:48" + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" }, { - "name": "symfony/yaml", - "version": "v2.8.2", + "name": "phpdocumentor/reflection-common", + "version": "2.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "34c8a4b51e751e7ea869b8262f883d008a2b81b8" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/34c8a4b51e751e7ea869b8262f883d008a2b81b8", - "reference": "34c8a4b51e751e7ea869b8262f883d008a2b81b8", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "phpDocumentor\\Reflection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -600,128 +759,1538 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2016-01-13 10:28:07" + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2020-04-27T09:25:28+00:00" }, { - "name": "zendframework/zend-filter", - "version": "2.6.1", + "name": "phpdocumentor/reflection-docblock", + "version": "5.1.0", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-filter.git", - "reference": "81078bee5529cfd7444c262b658e9f276b8f7af2" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" }, "dist": { "type": "zip", - "url": "https://packages.zendframework.com/composer/zendframework-zend-filter-2.6.1-bace94.zip", - "reference": "81078bee5529cfd7444c262b658e9f276b8f7af2", - "shasum": "d7a5a8264d158a6f472b2264dca363cdee7b652f" + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "ext-filter": "^7.1", + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0", + "phpdocumentor/type-resolver": "^1.0", + "webmozart/assert": "^1" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "pear/archive_tar": "^1.4", - "phpunit/phpunit": "~4.0", - "zendframework/zend-crypt": "^2.6", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-uri": "^2.5" + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" }, - "suggest": { - "zendframework/zend-crypt": "Zend\\Crypt component, for encryption filters", - "zendframework/zend-i18n": "Zend\\I18n component for filters depending on i18n functionality", - "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for using the filter chain functionality", - "zendframework/zend-uri": "Zend\\Uri component, for the UriNormalize filter" + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2020-02-22T12:28:44+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", + "shasum": "" + }, + "require": { + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "^7.2", + "mockery/mockery": "~1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-02-18T18:59:58+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.10.3", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "451c3cd1418cf640de218914901e51b064abb093" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { "psr-4": { - "Zend\\Filter\\": "src/" + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2020-03-05T15:02:03+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "0.4.4", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "d8d9d4645379e677466d407034436bb155b11c65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/d8d9d4645379e677466d407034436bb155b11c65", + "reference": "d8d9d4645379e677466d407034436bb155b11c65", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "require-dev": { + "consistence/coding-standard": "^3.5", + "ergebnis/composer-normalize": "^2.0.2", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "phing/phing": "^2.16.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.19", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^6.3", + "slevomat/coding-standard": "^4.7.2", + "symfony/process": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" } }, - "autoload-dev": { + "autoload": { "psr-4": { - "ZendTest\\Filter\\": "test/" + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "time": "2020-04-13T16:28:46+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "8.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "31e94ccc084025d6abee0585df533eb3a792b96a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/31e94ccc084025d6abee0585df533eb3a792b96a", + "reference": "31e94ccc084025d6abee0585df533eb3a792b96a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.3", + "phpunit/php-file-iterator": "^3.0", + "phpunit/php-text-template": "^2.0", + "phpunit/php-token-stream": "^4.0", + "sebastian/code-unit-reverse-lookup": "^2.0", + "sebastian/environment": "^5.0", + "sebastian/version": "^3.0", + "theseer/tokenizer": "^1.1.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2020-02-19T13:41:19+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4", + "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "provides a set of commonly needed data filters", - "homepage": "https://github.com/zendframework/zend-filter", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "filter", - "zf2" + "filesystem", + "iterator" ], - "time": "2016-02-08 18:02:37" + "time": "2020-04-18T05:02:12+00:00" }, { - "name": "zendframework/zend-stdlib", + "name": "phpunit/php-invoker", "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "86682d6607fe914577dab5388b95ef51ae18aa06" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a" }, "dist": { "type": "zip", - "url": "https://packages.zendframework.com/composer/zendframework-zend-stdlib-3.0.0-7f518e.zip", - "reference": "86682d6607fe914577dab5388b95ef51ae18aa06", - "shasum": "c813780712e2f3dc4cd28995c9c2b05a519de5c3" + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7579d5a1ba7f3ac11c80004d205877911315ae7a", + "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a", + "shasum": "" }, "require": { - "php": "^5.5 || ^7.0" + "php": "^7.3" }, "require-dev": { - "athletic/athletic": "~0.1", - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0" + "ext-pcntl": "*", + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-4": { - "Zend\\Stdlib\\": "src/" + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "time": "2020-02-07T06:06:11+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346" }, - "autoload-dev": { - "psr-4": { - "ZendTest\\Stdlib\\": "test/", - "ZendBench\\Stdlib\\": "benchmark/" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/526dc996cc0ebdfa428cd2dfccd79b7b53fee346", + "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": " ", - "homepage": "https://github.com/zendframework/zend-stdlib", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2020-02-01T07:43:44+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "3.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/dc9368fae6ef2ffa57eba80a7410bcef81df6258", + "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.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" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2020-04-20T06:00:37+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c", + "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2020-05-06T09:56:31+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "2d7080c622cf7884992e7c3cf87853877bae8ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2d7080c622cf7884992e7c3cf87853877bae8ff4", + "reference": "2d7080c622cf7884992e7c3cf87853877bae8ff4", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2.0", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.9.1", + "phar-io/manifest": "^1.0.3", + "phar-io/version": "^2.0.1", + "php": "^7.3", + "phpspec/prophecy": "^1.8.1", + "phpunit/php-code-coverage": "^8.0.1", + "phpunit/php-file-iterator": "^3.0", + "phpunit/php-invoker": "^3.0", + "phpunit/php-text-template": "^2.0", + "phpunit/php-timer": "^3.1.4", + "sebastian/code-unit": "^1.0.2", + "sebastian/comparator": "^4.0", + "sebastian/diff": "^4.0", + "sebastian/environment": "^5.0.1", + "sebastian/exporter": "^4.0", + "sebastian/global-state": "^4.0", + "sebastian/object-enumerator": "^4.0", + "sebastian/resource-operations": "^3.0", + "sebastian/type": "^2.0", + "sebastian/version": "^3.0" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2020-04-30T06:32:53+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ac958085bc19fcd1d36425c781ef4cbb5b06e2a5", + "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "time": "2020-04-30T05:58:10+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5b5dbe0044085ac41df47e79d34911a15b96d82e", + "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2020-02-07T06:20:13+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85b3435da967696ed618ff745f32be3ff4a2b8e8", + "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8", + "shasum": "" + }, + "require": { + "php": "^7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "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": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2020-02-07T06:08:51+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3e523c576f29dacecff309f35e4cc5a5c168e78a", + "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2020-05-08T05:01:12+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/c753f04d68cd489b6973cf9b4e505e191af3b05c", + "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2020-04-14T13:36:52+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "80c26562e964016538f832f305b2286e1ec29566" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/80c26562e964016538f832f305b2286e1ec29566", + "reference": "80c26562e964016538f832f305b2286e1ec29566", + "shasum": "" + }, + "require": { + "php": "^7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2020-02-07T06:10:52+00:00" + }, + { + "name": "sebastian/global-state", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bdb1e7c79e592b8c82cb1699be3c8743119b8a72", + "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72", + "shasum": "" + }, + "require": { + "php": "^7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2020-02-07T06:11:37+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "e67516b175550abad905dc952f43285957ef4363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67516b175550abad905dc952f43285957ef4363", + "reference": "e67516b175550abad905dc952f43285957ef4363", + "shasum": "" + }, + "require": { + "php": "^7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2020-02-07T06:12:23+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", + "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2020-02-07T06:19:40+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cdd86616411fc3062368b720b0425de10bd3d579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cdd86616411fc3062368b720b0425de10bd3d579", + "reference": "cdd86616411fc3062368b720b0425de10bd3d579", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2020-02-07T06:18:20+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", + "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2020-02-07T06:13:02+00:00" + }, + { + "name": "sebastian/type", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/9e8f42f740afdea51f5f4e8cec2035580e797ee1", + "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "time": "2020-02-07T06:13:43+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "0411bde656dce64202b39c2f4473993a9081d39e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0411bde656dce64202b39c2f4473993a9081d39e", + "reference": "0411bde656dce64202b39c2f4473993a9081d39e", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2020-01-21T06:36:37+00:00" + }, + { + "name": "slevomat/coding-standard", + "version": "6.3.6", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "7876032a4f55acf2de2cf3cd538feaf98a8a0fee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/7876032a4f55acf2de2cf3cd538feaf98a8a0fee", + "reference": "7876032a4f55acf2de2cf3cd538feaf98a8a0fee", + "shasum": "" + }, + "require": { + "php": "^7.1", + "phpstan/phpdoc-parser": "0.4.0 - 0.4.4", + "squizlabs/php_codesniffer": "^3.5.5" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "0.6.2", + "phing/phing": "2.16.3", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpstan/phpstan": "0.12.19", + "phpstan/phpstan-deprecation-rules": "0.12.2", + "phpstan/phpstan-phpunit": "0.12.8", + "phpstan/phpstan-strict-rules": "0.12.2", + "phpunit/phpunit": "7.5.20|8.5.2|9.1.2" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "6.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "time": "2020-05-22T15:11:14+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.5.5", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/73e2e7f57d958e7228fce50dc0c61f58f017f9f6", + "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2020-04-17T01:09:41+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2020-05-12T16:14:59+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6", + "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "vimeo/psalm": "<3.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", "keywords": [ - "stdlib", - "zf2" + "assert", + "check", + "validate" ], - "time": "2016-02-03 16:53:37" + "time": "2020-04-18T12:12:48+00:00" } ], "aliases": [], @@ -730,7 +2299,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^5.3.2 || ^7.0" + "php": "^7.4" }, "platform-dev": [] } diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000..de7c5ac --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/phpunit.xml b/phpunit.xml index 83ec053..8a7c83b 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,6 +1,15 @@ - - - + + + tests/DMS @@ -11,14 +20,10 @@ src/DMS - - tests - vendor - - + diff --git a/src/DMS/Filter/Exception/FilterException.php b/src/DMS/Filter/Exception/FilterException.php index 5fff22a..e19c3c2 100644 --- a/src/DMS/Filter/Exception/FilterException.php +++ b/src/DMS/Filter/Exception/FilterException.php @@ -1,14 +1,14 @@ options; } diff --git a/src/DMS/Filter/Filter.php b/src/DMS/Filter/Filter.php index 4385c5c..0cc8b1b 100644 --- a/src/DMS/Filter/Filter.php +++ b/src/DMS/Filter/Filter.php @@ -1,44 +1,32 @@ metadataFactory = $metadataFactory; $this->filterLoader = $filterLoader; @@ -47,7 +35,7 @@ public function __construct(Mapping\ClassMetadataFactory $metadataFactory, $filt /** * {@inheritDoc} */ - public function filterEntity($object) + public function filterEntity($object) : void { $this->walkObject($object); } @@ -55,7 +43,7 @@ public function filterEntity($object) /** * {@inheritDoc} */ - public function filterProperty($object, $property) + public function filterProperty($object, $property) : void { $this->walkObject($object, $property); } @@ -67,16 +55,14 @@ public function filterValue($value, $rule) { if ($rule instanceof Rules\Rule) { $filter = $this->filterLoader->getFilterForRule($rule); + return $filter->apply($rule, $value); } return $this->walkRuleChain($value, $rule); } - /** - * {@inheritDoc} - */ - public function getMetadataFactory() + public function getMetadataFactory() : ClassMetadataFactoryInterface { return $this->metadataFactory; } @@ -85,10 +71,10 @@ public function getMetadataFactory() * Iterates over annotated properties in an object filtering the selected * values * - * @param object $object - * @param string $limitProperty + * @throws ReflectionException + * @throws ReflectionException */ - protected function walkObject($object, $limitProperty = null) + protected function walkObject(?object $object, ?string $limitProperty = null) : void { if ($object === null) { return; @@ -100,7 +86,7 @@ protected function walkObject($object, $limitProperty = null) $walker = new ObjectWalker($object, $this->filterLoader); //Get all filtered properties or limit with selected - $properties = ($limitProperty !== null) ? array($limitProperty) : $metadata->getFilteredProperties(); + $properties = $limitProperty !== null ? [$limitProperty] : $metadata->getFilteredProperties(); //Iterate over properties with filters foreach ($properties as $property) { @@ -111,15 +97,16 @@ protected function walkObject($object, $limitProperty = null) /** * Iterates over an array of filters applying all to the value * - * @param mixed $value - * @param array $rules + * @param mixed $value + * @param Rule[] $rules + * * @return mixed */ - protected function walkRuleChain($value, $rules) + protected function walkRuleChain($value, array $rules) { foreach ($rules as $rule) { $filter = $this->filterLoader->getFilterForRule($rule); - $value = $filter->apply($rule, $value); + $value = $filter->apply($rule, $value); } return $value; diff --git a/src/DMS/Filter/FilterInterface.php b/src/DMS/Filter/FilterInterface.php index d901b76..2eabf76 100644 --- a/src/DMS/Filter/FilterInterface.php +++ b/src/DMS/Filter/FilterInterface.php @@ -1,12 +1,14 @@ allowWhitespace)? " ":""; + $whitespaceChar = $rule->allowWhitespace? ' ':''; $rule->unicodePattern = '/[^\p{L}\p{N}' . $whitespaceChar . ']/u'; $rule->pattern = '/[^a-zA-Z0-9' . $whitespaceChar . ']/'; diff --git a/src/DMS/Filter/Filters/Alpha.php b/src/DMS/Filter/Filters/Alpha.php index acb95e9..1746e44 100644 --- a/src/DMS/Filter/Filters/Alpha.php +++ b/src/DMS/Filter/Filters/Alpha.php @@ -1,14 +1,13 @@ allowWhitespace)? " ":""; + $whitespaceChar = $rule->allowWhitespace? ' ':''; $rule->unicodePattern = '/[^\p{L}' . $whitespaceChar . ']/u'; $rule->pattern = '/[^a-zA-Z' . $whitespaceChar . ']/'; diff --git a/src/DMS/Filter/Filters/BaseFilter.php b/src/DMS/Filter/Filters/BaseFilter.php index 8e4aaa8..c23a509 100644 --- a/src/DMS/Filter/Filters/BaseFilter.php +++ b/src/DMS/Filter/Filters/BaseFilter.php @@ -1,4 +1,7 @@ currentObject = $object; } /** * Retrieves the current Object to be used - * - * @return object | null */ - public function getCurrentObject() + public function getCurrentObject() : ?object { return $this->currentObject; } @@ -49,33 +45,38 @@ public function getCurrentObject() */ public function apply(Rule $rule, $value) { + if ($value === null) { + return null; + } + $type = $rule->getInputType(); - if ($type == CallbackRule::SELF_METHOD_TYPE) { + if ($type === CallbackRule::SELF_METHOD_TYPE) { return $this->useObjectMethod($rule->callback, $value); } - if ($type == CallbackRule::CALLABLE_TYPE) { + if ($type === CallbackRule::CALLABLE_TYPE) { return $this->useCallable($rule->callback, $value); } - if ($type == CallbackRule::CLOSURE_TYPE) { + if ($type === CallbackRule::CLOSURE_TYPE) { return $this->useClosure($rule->callback, $value); } - throw new InvalidCallbackException("Unsupported callback provided, failed to filter property"); + throw new InvalidCallbackException('Unsupported callback provided, failed to filter property'); } /** * Filters by executing a method in the object * - * @param string $method * @param mixed $value - * @throws \DMS\Filter\Exception\FilterException - * @throws \DMS\Filter\Exception\InvalidCallbackException + * * @return mixed + * + * @throws InvalidCallbackException + * @throws FilterException */ - protected function useObjectMethod($method, $value) + protected function useObjectMethod(string $method, $value) { $currentObject = $this->getCurrentObject(); @@ -101,30 +102,34 @@ protected function useObjectMethod($method, $value) /** * Filters using a callable. * - * @param callable $callable - * @param mixed $value - * @throws \DMS\Filter\Exception\InvalidCallbackException + * @param mixed $value + * @param string[]|callable $callable + * * @return mixed + * + * @throws InvalidCallbackException */ protected function useCallable($callable, $value) { if (! is_callable($callable, false, $input)) { - throw new InvalidCallbackException("The callable $input could not be resolved."); + throw new InvalidCallbackException(sprintf('The callable %s could not be resolved.', $input)); } return call_user_func($callable, $value); } /** - * @param Closure $closure - * @param mixed $value - * @throws \DMS\Filter\Exception\InvalidCallbackException + * @param mixed $value + * @param string|Closure $closure + * * @return mixed + * + * @throws InvalidCallbackException */ protected function useClosure($closure, $value) { if (! $closure instanceof Closure) { - throw new InvalidCallbackException("CallbackFilter: the provided closure is invalid"); + throw new InvalidCallbackException('CallbackFilter: the provided closure is invalid'); } return $closure($value); diff --git a/src/DMS/Filter/Filters/Digits.php b/src/DMS/Filter/Filters/Digits.php index 8a1c22c..a1d602f 100644 --- a/src/DMS/Filter/Filters/Digits.php +++ b/src/DMS/Filter/Filters/Digits.php @@ -1,14 +1,13 @@ allowWhitespace)? " ":""; + $whitespaceChar = $rule->allowWhitespace? ' ':''; $rule->unicodePattern = '/[^\p{N}' . $whitespaceChar . ']/'; $rule->pattern = '/[^0-9' . $whitespaceChar . ']/'; diff --git a/src/DMS/Filter/Filters/FloatScalar.php b/src/DMS/Filter/Filters/FloatScalar.php index e34d988..56b96bf 100644 --- a/src/DMS/Filter/Filters/FloatScalar.php +++ b/src/DMS/Filter/Filters/FloatScalar.php @@ -1,15 +1,16 @@ getFilter(); if (class_exists($filterIdentifier)) { - return new $filterIdentifier; + return new $filterIdentifier(); } - $error = "Unable to locate filter for: $filterIdentifier defined in " . get_class($rule); - throw new \UnexpectedValueException($error); + $error = sprintf('Unable to locate filter for: %s defined in %s', $filterIdentifier, get_class($rule)); + + throw new UnexpectedValueException($error); } } diff --git a/src/DMS/Filter/Filters/Loader/FilterLoaderInterface.php b/src/DMS/Filter/Filters/Loader/FilterLoaderInterface.php index 1f8a772..5cf140d 100644 --- a/src/DMS/Filter/Filters/Loader/FilterLoaderInterface.php +++ b/src/DMS/Filter/Filters/Loader/FilterLoaderInterface.php @@ -1,25 +1,24 @@ checkUnicodeSupport() && $rule->unicodePattern !== null) + $pattern = $this->checkUnicodeSupport() && $rule->unicodePattern !== null ? $rule->unicodePattern : $rule->pattern; @@ -38,12 +37,12 @@ public function apply(Rule $rule, $value) /** * Verifies that Regular Expression functions support unicode - * @return boolean */ - public function checkUnicodeSupport() + public function checkUnicodeSupport() : bool { - if (null === static::$unicodeEnabled) { - static::$unicodeEnabled = (@preg_match('/\pL/u', 'a')) ? true : false; + if (static::$unicodeEnabled === null) { + //phpcs:disable SlevomatCodingStandard.ControlStructures.UselessTernaryOperator.UselessTernaryOperator + static::$unicodeEnabled = @preg_match('/\pL/u', 'a') ? true : false; } return static::$unicodeEnabled; diff --git a/src/DMS/Filter/Filters/StripNewlines.php b/src/DMS/Filter/Filters/StripNewlines.php index 8de88ad..172e3c5 100644 --- a/src/DMS/Filter/Filters/StripNewlines.php +++ b/src/DMS/Filter/Filters/StripNewlines.php @@ -1,14 +1,14 @@ encoding === null) { return false; @@ -49,9 +50,9 @@ public function useEncoding($rule) $encodings = array_map('strtolower', mb_list_encodings()); - if (!in_array(strtolower($rule->encoding), $encodings)) { + if (! in_array(strtolower($rule->encoding), $encodings)) { throw new FilterException( - "mbstring does not support the '".$rule->encoding."' encoding" + "mbstring does not support the '" . $rule->encoding . "' encoding" ); } diff --git a/src/DMS/Filter/Filters/ToUpper.php b/src/DMS/Filter/Filters/ToUpper.php index 29a8c76..1755af5 100644 --- a/src/DMS/Filter/Filters/ToUpper.php +++ b/src/DMS/Filter/Filters/ToUpper.php @@ -1,15 +1,21 @@ encoding === null) { return false; } - if (!function_exists('mb_strtoupper')) { + if (! function_exists('mb_strtoupper')) { throw new FilterException( - 'mbstring is required to use ToLower with an encoding.'); + 'mbstring is required to use ToLower with an encoding.' + ); } $this->encoding = (string) $rule->encoding; - $encodings = array_map('strtolower', mb_list_encodings()); + $encodings = array_map('strtolower', mb_list_encodings()); - if (!in_array(strtolower($rule->encoding), $encodings)) { + if (! in_array(strtolower($rule->encoding), $encodings)) { throw new FilterException( - "mbstring does not support the '".$rule->encoding."' encoding" + "mbstring does not support the '" . $rule->encoding . "' encoding" ); } diff --git a/src/DMS/Filter/Filters/Trim.php b/src/DMS/Filter/Filters/Trim.php index a460785..f88fb72 100644 --- a/src/DMS/Filter/Filters/Trim.php +++ b/src/DMS/Filter/Filters/Trim.php @@ -1,14 +1,14 @@ setOptions($options); return $filter; - } catch (\ReflectionException $e) { + } catch (ReflectionException $e) { return new $class($options); } } diff --git a/src/DMS/Filter/Mapping/ClassMetadata.php b/src/DMS/Filter/Mapping/ClassMetadata.php index c2d6cb8..dfaf82f 100644 --- a/src/DMS/Filter/Mapping/ClassMetadata.php +++ b/src/DMS/Filter/Mapping/ClassMetadata.php @@ -1,39 +1,32 @@ className = $class; } @@ -41,7 +34,7 @@ public function __construct($class) /** * {@inheritDoc} */ - public function getFilteredProperties() + public function getFilteredProperties() : array { return array_keys($this->filteredProperties); } @@ -49,7 +42,7 @@ public function getFilteredProperties() /** * {@inheritDoc} */ - public function getPropertyRules($property) + public function getPropertyRules($property) : ?array { if (! isset($this->filteredProperties[$property])) { return null; @@ -58,10 +51,7 @@ public function getPropertyRules($property) return $this->filteredProperties[$property]['rules']; } - /** - * {@inheritDoc} - */ - public function mergeRules(ClassMetadataInterface $metadata) + public function mergeRules(ClassMetadataInterface $metadata) : void { foreach ($metadata->getFilteredProperties() as $property) { foreach ($metadata->getPropertyRules($property) as $rule) { @@ -73,32 +63,27 @@ public function mergeRules(ClassMetadataInterface $metadata) /** * {@inheritDoc} */ - public function addPropertyRule($property, Rule $rule) + public function addPropertyRule($property, Rule $rule) : void { - if (!isset($this->filteredProperties[$property])) { - $this->filteredProperties[$property] = array('rules' => array()); + if (! isset($this->filteredProperties[$property])) { + $this->filteredProperties[$property] = ['rules' => []]; } $this->filteredProperties[$property]['rules'][] = $rule; } - /** - * {@inheritDoc} - */ - public function getClassName() + public function getClassName() : string { return $this->className; } /** * {@inheritDoc} + * + * @throws ReflectionException */ - public function getReflectionClass() + public function getReflectionClass() : ReflectionClass { - if (!$this->reflClass) { - $this->reflClass = new \ReflectionClass($this->getClassName()); - } - - return $this->reflClass; + return new ReflectionClass($this->getClassName()); } } diff --git a/src/DMS/Filter/Mapping/ClassMetadataFactory.php b/src/DMS/Filter/Mapping/ClassMetadataFactory.php index 1540fb3..c6c368f 100644 --- a/src/DMS/Filter/Mapping/ClassMetadataFactory.php +++ b/src/DMS/Filter/Mapping/ClassMetadataFactory.php @@ -1,49 +1,38 @@ loader = $loader; - $this->cache = $cache; + $this->cache = $cache; } /** * {@inheritDoc} */ - public function getClassMetadata($class) + public function getClassMetadata($class) : ClassMetadataInterface { $class = ltrim($class, '\\'); @@ -55,6 +44,7 @@ public function getClassMetadata($class) //Check Cache for it if ($this->cache !== null && $this->cache->contains($class)) { $this->setParsedClass($class, $this->cache->fetch($class)); + return $this->getParsedClass($class); } @@ -64,11 +54,8 @@ public function getClassMetadata($class) /** * Reads class metadata for a new and unparsed class - * - * @param string $class - * @return ClassMetadataInterface */ - private function parseClassMetadata($class) + private function parseClassMetadata(string $class) : ClassMetadataInterface { $metadata = new ClassMetadata($class); @@ -91,22 +78,16 @@ private function parseClassMetadata($class) /** * Checks if a class has already been parsed - * - * @param string $class - * @return boolean */ - private function isParsed($class) + private function isParsed(string $class) : bool { return isset($this->parsedClasses[$class]); } /** * Retrieves data from a class already parsed - * - * @param string $class - * @return ClassMetadataInterface */ - private function getParsedClass($class) + private function getParsedClass(string $class) : ?ClassMetadataInterface { if (! $this->isParsed($class)) { return null; @@ -117,11 +98,8 @@ private function getParsedClass($class) /** * Stores data from a parsed class - * - * @param string $class - * @param ClassMetadataInterface $metadata */ - private function setParsedClass($class, ClassMetadataInterface $metadata) + private function setParsedClass(string $class, ClassMetadataInterface $metadata) : void { $this->parsedClasses[$class] = $metadata; } @@ -129,25 +107,23 @@ private function setParsedClass($class, ClassMetadataInterface $metadata) /** * Checks if the class being parsed has a parent and cascades parsing * to its parent - * - * @param ClassMetadataInterface $metadata */ - protected function loadParentMetadata(ClassMetadataInterface $metadata) + protected function loadParentMetadata(ClassMetadataInterface $metadata) : void { $parent = $metadata->getReflectionClass()->getParentClass(); - if ($parent) { - $metadata->mergeRules($this->getClassMetadata($parent->getName())); + if (! $parent) { + return; } + + $metadata->mergeRules($this->getClassMetadata($parent->getName())); } /** * Checks if the object has interfaces and cascades parsing of annotatiosn * to all the interfaces - * - * @param ClassMetadataInterface $metadata */ - protected function loadInterfaceMetadata(ClassMetadataInterface $metadata) + protected function loadInterfaceMetadata(ClassMetadataInterface $metadata) : void { foreach ($metadata->getReflectionClass()->getInterfaces() as $interface) { $metadata->mergeRules($this->getClassMetadata($interface->getName())); diff --git a/src/DMS/Filter/Mapping/ClassMetadataFactoryInterface.php b/src/DMS/Filter/Mapping/ClassMetadataFactoryInterface.php index a57c1c0..67c8762 100644 --- a/src/DMS/Filter/Mapping/ClassMetadataFactoryInterface.php +++ b/src/DMS/Filter/Mapping/ClassMetadataFactoryInterface.php @@ -1,20 +1,16 @@ getReflectionClass(); @@ -51,26 +42,24 @@ public function loadClassMetadata(ClassMetadataInterface $metadata) foreach ($reflClass->getProperties() as $property) { $this->readProperty($property, $metadata); } + + return true; } /** * Reads annotations for a selected property in the class - * - * @param ReflectionProperty $property - * @param ClassMetadataInterface $metadata */ - private function readProperty(ReflectionProperty $property, ClassMetadataInterface $metadata) + private function readProperty(ReflectionProperty $property, ClassMetadataInterface $metadata) : void { // Skip if this property is not from this class if ($property->getDeclaringClass()->getName() - != $metadata->getClassName() + !== $metadata->getClassName() ) { return; } //Iterate over all annotations foreach ($this->reader->getPropertyAnnotations($property) as $rule) { - //Skip is its not a rule if (! $rule instanceof Rules\Rule) { continue; diff --git a/src/DMS/Filter/Mapping/Loader/LoaderInterface.php b/src/DMS/Filter/Mapping/Loader/LoaderInterface.php index 51fbc94..f5348f1 100644 --- a/src/DMS/Filter/Mapping/Loader/LoaderInterface.php +++ b/src/DMS/Filter/Mapping/Loader/LoaderInterface.php @@ -1,14 +1,13 @@ object = $object; - $this->reflClass = new \ReflectionClass($object); + $this->reflClass = new ReflectionClass($object); $this->filterLoader = $filterLoader; } /** * Applies the selected rules to a property in the object * - * @param string $property - * @param array $filterRules + * @param Rule[] $filterRules + * + * @throws ReflectionException */ - public function applyFilterRules($property, $filterRules = array()) + public function applyFilterRules(string $property, array $filterRules = []) : void { foreach ($filterRules as $rule) { $this->applyFilterRule($property, $rule); @@ -58,15 +54,13 @@ public function applyFilterRules($property, $filterRules = array()) /** * Applies a Filtering Rule to a property * - * @param string $property - * @param Rules\Rule $filterRule - * - * @throws \UnexpectedValueException + * @throws UnexpectedValueException + * @throws ReflectionException */ - public function applyFilterRule($property, Rules\Rule $filterRule) + public function applyFilterRule(string $property, Rules\Rule $filterRule) : void { if ($this->filterLoader === null) { - throw new \UnexpectedValueException("A FilterLoader must be provided"); + throw new UnexpectedValueException('A FilterLoader must be provided'); } $value = $this->getPropertyValue($property); @@ -85,10 +79,12 @@ public function applyFilterRule($property, Rules\Rule $filterRule) /** * Retrieves the value of the property, overcoming visibility problems * - * @param string $propertyName * @return mixed + * + * @throws ReflectionException + * @throws ReflectionException */ - private function getPropertyValue($propertyName) + private function getPropertyValue(string $propertyName) { return $this->getAccessibleReflectionProperty($propertyName) ->getValue($this->object); @@ -97,10 +93,12 @@ private function getPropertyValue($propertyName) /** * Overrides the value of a property, overcoming visibility problems * - * @param string$propertyName * @param mixed $value + * + * @throws ReflectionException + * @throws ReflectionException */ - private function setPropertyValue($propertyName, $value) + private function setPropertyValue(string $propertyName, $value) : void { $this->getAccessibleReflectionProperty($propertyName) ->setValue($this->object, $value); @@ -109,10 +107,10 @@ private function setPropertyValue($propertyName, $value) /** * Retrieves a property from the object and makes it visible * - * @param string $propertyName - * @return \ReflectionProperty + * @throws ReflectionException + * @throws ReflectionException */ - private function getAccessibleReflectionProperty($propertyName) + private function getAccessibleReflectionProperty(string $propertyName) : ReflectionProperty { $property = $this->reflClass->getProperty($propertyName); $property->setAccessible(true); diff --git a/src/DMS/Filter/Rules/Alnum.php b/src/DMS/Filter/Rules/Alnum.php index 70e1102..8b77e9c 100644 --- a/src/DMS/Filter/Rules/Alnum.php +++ b/src/DMS/Filter/Rules/Alnum.php @@ -1,29 +1,22 @@ callback instanceof Closure: return self::CLOSURE_TYPE; - case is_callable($this->callback, false): return self::CALLABLE_TYPE; - case is_string($this->callback): return self::SELF_METHOD_TYPE; } throw new InvalidCallbackException( - "The input provided for Callback filter is not supported or the callable not valid. - Please refer to the class documentation." + 'The input provided for Callback filter is not supported or the callable not valid. + Please refer to the class documentation.' ); } } diff --git a/src/DMS/Filter/Rules/Digits.php b/src/DMS/Filter/Rules/Digits.php index 086fefa..3c0d295 100644 --- a/src/DMS/Filter/Rules/Digits.php +++ b/src/DMS/Filter/Rules/Digits.php @@ -1,29 +1,22 @@ invalidOptions), - get_class($this) + static::class ), $result->invalidOptions ); @@ -51,7 +59,7 @@ public function __construct($options = null) sprintf( 'The options "%s" must be set for rule %s', implode('", "', array_keys($result->missingOptions)), - get_class($this) + static::class ), array_keys($result->missingOptions) ); @@ -63,28 +71,29 @@ public function __construct($options = null) * for the parsing process * * @param mixed $options - * @return \stdClass */ - private function parseOptions($options) + private function parseOptions($options) : stdClass { - $parseResult = new \stdClass(); - $parseResult->invalidOptions = array(); - $parseResult->missingOptions = array_flip((array)$this->getRequiredOptions()); + $parseResult = new stdClass(); + $parseResult->invalidOptions = []; + $parseResult->missingOptions = array_flip($this->getRequiredOptions()); + $options = $this->extractFromValueOption($options); - //Doctrine parses constructor parameter into 'value' array param, restore it - if (is_array($options) && count($options) == 1 && isset($options['value'])) { - $options = $options['value']; + if ($options === null) { + return $parseResult; } //Parse Option Array - if (is_array($options) && count($options) > 0 && is_string(key($options))) { + if ($this->isNonEmptyMap($options)) { $this->parseOptionsArray($options, $parseResult); + return $parseResult; } //Parse Single Value - if (null !== $options && ! (is_array($options) && count($options) === 0)) { + if ($options !== []) { $this->parseSingleOption($options, $parseResult); + return $parseResult; } @@ -94,10 +103,9 @@ private function parseOptions($options) /** * Parses Options in the array format * - * @param array $options - * @param \stdClass $result + * @param mixed[] $options */ - private function parseOptionsArray($options, \stdClass $result) + private function parseOptionsArray(array $options, stdClass $result) : void { foreach ($options as $option => $value) { if (! property_exists($this, $option)) { @@ -114,24 +122,25 @@ private function parseOptionsArray($options, \stdClass $result) /** * Parses single option received * - * @param string $options - * @param \stdClass $result - * @throws \DMS\Filter\Exception\RuleDefinitionException + * @param string|mixed[] $options + * + * @throws RuleDefinitionException */ - private function parseSingleOption($options, \stdClass $result) + private function parseSingleOption($options, stdClass $result) : void { $option = $this->getDefaultOption(); //No Default set, unsure what to do - if (null === $option) { + if ($option === null) { throw new RuleDefinitionException( - sprintf('No default option is configured for rule %s', get_class($this)) + sprintf('No default option is configured for rule %s', static::class) ); } //Default option points to invalid one if (! property_exists($this, $option)) { $result->invalidOptions[] = $option; + return; } @@ -145,12 +154,13 @@ private function parseSingleOption($options, \stdClass $result) * * Override this method if you want to define required options. * - * @return array * @see __construct() + * + * @return string[] */ - public function getRequiredOptions() + public function getRequiredOptions() : array { - return array(); + return []; } /** @@ -158,10 +168,9 @@ public function getRequiredOptions() * * Override this method to define a default option. * - * @return string * @see __construct() */ - public function getDefaultOption() + public function getDefaultOption() : ?string { return null; } @@ -170,11 +179,33 @@ public function getDefaultOption() * Retrieves the Filter class that is responsible for executing this filter * It may also be a service name. By default it loads a class with the * same name from the Filters namespace. + */ + public function getFilter() : string + { + return str_replace('Rules', 'Filters', static::class); + } + + /** + * Doctrine parses constructor parameter into 'value' array param, restore it + * + * @param mixed $options * - * @return string + * @return mixed[]|mixed + */ + private function extractFromValueOption($options) + { + if (is_array($options) && count($options) === 1 && isset($options['value'])) { + $options = $options['value']; + } + + return $options; + } + + /** + * @param mixed $options */ - public function getFilter() + private function isNonEmptyMap($options) : bool { - return str_replace('Rules', 'Filters', get_class($this)); + return is_array($options) && count($options) > 0 && is_string(key($options)); } } diff --git a/src/DMS/Filter/Rules/StripNewlines.php b/src/DMS/Filter/Rules/StripNewlines.php index 2e6b228..bf84afc 100644 --- a/src/DMS/Filter/Rules/StripNewlines.php +++ b/src/DMS/Filter/Rules/StripNewlines.php @@ -1,13 +1,12 @@ - * - * @var string */ - public $allowed = null; + public ?string $allowed = null; - /** - * {@inheritDoc} - */ - public function getDefaultOption() + public function getDefaultOption() : ?string { return 'allowed'; } diff --git a/src/DMS/Filter/Rules/ToLower.php b/src/DMS/Filter/Rules/ToLower.php index fc5f047..551b834 100644 --- a/src/DMS/Filter/Rules/ToLower.php +++ b/src/DMS/Filter/Rules/ToLower.php @@ -1,28 +1,22 @@ filter = new Filter($this->buildMetadataFactory(), new FilterLoader()); } - public function tearDown() - { - parent::tearDown(); - } - - public function testFilter() + public function testFilter(): void { $class = new Dummy\Classes\AnnotatedClass(); $class->name = "Sir Isaac Newton"; @@ -40,11 +33,11 @@ public function testFilter() $this->assertEquals($classClone->nickname, $class->nickname); $this->assertNotEquals($classClone->description, $class->description); - $this->assertNotContains(" Newton"; @@ -61,12 +54,12 @@ public function testFilterWithParent() $this->assertNotEquals($classClone->description, $class->description); $this->assertNotEquals($classClone->surname, $class->surname); - $this->assertNotContains(" Newton"; @@ -79,11 +72,11 @@ public function testFilterProperty() $this->assertEquals($classClone->name, $class->name); $this->assertNotEquals($classClone->description, $class->description); - $this->assertContains("