diff --git a/composer.json b/composer.json index 7fda4cf..2a1b7ee 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "minimum-stability": "stable", "require": { "php": "^8.0", - "thecodingmachine/safe": "^1.0" + "thecodingmachine/safe": "^1.0 || ^2.0" }, "require-dev": { "doctrine/annotations": "^1.0", diff --git a/composer.lock b/composer.lock index 5708c23..ba0cc78 100644 --- a/composer.lock +++ b/composer.lock @@ -4,43 +4,50 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "49d18e560a90ee196a285e3714597755", + "content-hash": "d809e9452e29f79dd1150d226a0a4820", "packages": [ { "name": "thecodingmachine/safe", - "version": "v1.3.3", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/thecodingmachine/safe.git", - "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc" + "reference": "e788f3d09dcd36f806350aedb77eac348fafadd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc", - "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/e788f3d09dcd36f806350aedb77eac348fafadd3", + "reference": "e788f3d09dcd36f806350aedb77eac348fafadd3", "shasum": "" }, "require": { - "php": ">=7.2" + "php": "^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12", + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^9.5", "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^0.12" + "thecodingmachine/phpstan-strict-rules": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.1-dev" + "dev-master": "2.2.x-dev" } }, "autoload": { "files": [ "deprecated/apc.php", + "deprecated/array.php", + "deprecated/datetime.php", "deprecated/libevent.php", + "deprecated/misc.php", + "deprecated/password.php", "deprecated/mssql.php", "deprecated/stats.php", + "deprecated/strings.php", "lib/special_cases.php", + "deprecated/mysqli.php", "generated/apache.php", "generated/apcu.php", "generated/array.php", @@ -61,6 +68,7 @@ "generated/fpm.php", "generated/ftp.php", "generated/funchand.php", + "generated/gettext.php", "generated/gmp.php", "generated/gnupg.php", "generated/hash.php", @@ -70,7 +78,6 @@ "generated/image.php", "generated/imap.php", "generated/info.php", - "generated/ingres-ii.php", "generated/inotify.php", "generated/json.php", "generated/ldap.php", @@ -79,20 +86,14 @@ "generated/mailparse.php", "generated/mbstring.php", "generated/misc.php", - "generated/msql.php", "generated/mysql.php", - "generated/mysqli.php", - "generated/mysqlndMs.php", - "generated/mysqlndQc.php", "generated/network.php", "generated/oci8.php", "generated/opcache.php", "generated/openssl.php", "generated/outcontrol.php", - "generated/password.php", "generated/pcntl.php", "generated/pcre.php", - "generated/pdf.php", "generated/pgsql.php", "generated/posix.php", "generated/ps.php", @@ -103,7 +104,6 @@ "generated/sem.php", "generated/session.php", "generated/shmop.php", - "generated/simplexml.php", "generated/sockets.php", "generated/sodium.php", "generated/solr.php", @@ -126,13 +126,13 @@ "generated/zip.php", "generated/zlib.php" ], - "psr-4": { - "Safe\\": [ - "lib/", - "deprecated/", - "generated/" - ] - } + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "deprecated/Exceptions/", + "generated/Exceptions/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -141,9 +141,9 @@ "description": "PHP core functions that throw exceptions instead of returning FALSE on error", "support": { "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v1.3.3" + "source": "https://github.com/thecodingmachine/safe/tree/v2.4.0" }, - "time": "2020-10-28T17:51:34+00:00" + "time": "2022-10-07T14:02:17+00:00" } ], "packages-dev": [ diff --git a/lib/Iterator/PhpDocumentorIterator.php b/lib/Iterator/PhpDocumentorIterator.php index de1735f..072db1a 100644 --- a/lib/Iterator/PhpDocumentorIterator.php +++ b/lib/Iterator/PhpDocumentorIterator.php @@ -32,17 +32,19 @@ use function assert; use function class_exists; use function defined; +use function function_exists; +use function is_callable; use function is_dir; use function is_file; use function iterator_to_array; use function ltrim; use function Safe\glob; use function Safe\preg_match; -use function Safe\uasort; use function strpos; use const GLOB_BRACE; use const GLOB_ONLYDIR; +use const PHP_VERSION_ID; final class PhpDocumentorIterator extends ClassIterator { @@ -210,7 +212,20 @@ static function (SplFileInfo $file) { ), RecursiveIteratorIterator::LEAVES_ONLY, )); - uasort($files, static function (SplFileInfo $a, SplFileInfo $b) { + + /** + * Compatibility layer for uasort: + * + * @see https://www.php.net/manual/en/function.uasort.php + * - in php 8.2.0 uasort always returns true instead of bool + * - subsequently the function has been removed from thecodingmachine\safe >= 2.0 + */ + $uasort = function_exists('\Safe\uasort') && PHP_VERSION_ID <= 80200 + ? '\Safe\uasort' + : '\uasort'; + + assert(is_callable($uasort)); + $uasort($files, static function (SplFileInfo $a, SplFileInfo $b) { return (string) $a <=> (string) $b; });