From 606672b1d6a457ff744054c0b2ace6058627c9bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=B8=9C=E4=BA=91?= Date: Fri, 26 Sep 2025 18:10:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor(admin):=20=E8=BF=81=E7=A7=BB=E5=88=B0?= =?UTF-8?q?=20php8.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将多个匿名函数改为箭头函数以提高可读性 - 修复部分变量类型不匹配的问题,增加类型转换 - 删除冗余的代码和注释,简化逻辑 - 更新数据库操作相关代码,提高安全性 - 优化数组处理和字符串操作方法 - 统一代码风格,提升整体代码质量 --- composer.json | 261 +- composer.lock | 4411 +++++++++++++---- rector.php | 30 + scripts/docker-env.sh | 2 +- .../Controller/AdminAbstractController.php | 5 +- src/admin/src/Controller/LogController.php | 4 +- src/admin/src/Controller/MenuController.php | 26 +- src/admin/src/Controller/RoleController.php | 2 +- src/admin/src/Controller/SystemController.php | 8 +- src/admin/src/Controller/UserController.php | 16 +- src/admin/src/Install/InstallCommand.php | 2 +- src/admin/src/Install/UpdateCommand.php | 2 +- .../src/Middleware/PermissionMiddleware.php | 4 +- src/admin/src/Model/GlobalConfig.php | 6 +- src/admin/src/Model/User.php | 2 +- src/admin/src/Model/Versionable.php | 9 +- src/admin/src/Service/ExportService.php | 9 +- src/admin/src/Service/GlobalConfig.php | 4 +- src/admin/src/Service/Menu.php | 6 +- src/admin/src/Service/OperatorLogService.php | 4 +- src/admin/src/Service/PermissionService.php | 21 +- src/alert-manager/src/AlertJob.php | 6 +- src/alert-manager/src/AlertService.php | 2 - src/base-utils/src/AKSK.php | 10 +- src/base-utils/src/AliyunOSS.php | 6 +- src/base-utils/src/Guzzle.php | 23 +- src/base-utils/src/Helper/array.php | 2 +- src/base-utils/src/Helper/common.php | 49 +- src/base-utils/src/Helper/system.php | 11 +- src/base-utils/src/JWT.php | 5 +- .../src/Listener/DbQueryExecutedListener.php | 5 - src/base-utils/src/Model/BaseModel.php | 20 +- src/base-utils/src/Model/EsBaseModel.php | 8 +- src/base-utils/src/Redis/Redis.php | 11 +- src/base-utils/src/Redis/RedisArray.php | 2 +- src/base-utils/src/Redis/RedisQueue.php | 18 +- .../Controller/AbstractController.php | 97 +- .../src/Scaffold/Controller/Controller.php | 6 +- src/base-utils/src/classmap/OssAdapter.php | 35 +- .../src/classmap/ProviderConfig.php | 20 +- src/base-utils/src/config/routes.php | 10 +- .../src/Controller/ConfigCenterController.php | 2 +- .../src/Install/InstallCommand.php | 2 +- src/cron-center/src/CommandJobAbstract.php | 2 +- .../src/Controller/CronNodeController.php | 2 +- .../src/Controller/CrontabController.php | 6 +- src/cron-center/src/CronManager.php | 18 +- .../src/CrontabDispatcherProcess.php | 2 +- src/cron-center/src/Executor.php | 9 +- .../src/Install/InstallCommand.php | 2 +- .../src/Controller/DsnController.php | 4 +- src/data-focus/src/Install/InstallCommand.php | 2 +- src/data-focus/src/Service/Dsn.php | 9 +- src/data-focus/src/Util/CodeRunner.php | 28 +- src/data-focus/src/Util/PHPSandbox.php | 4 +- src/data-focus/src/Util/SimpleHtmlDom.php | 224 +- src/data-focus/src/Util/func.php | 8 +- src/dev-tools/src/AbstractMaker.php | 14 +- .../src/Controller/DevController.php | 19 +- src/dev-tools/src/ControllerMaker.php | 4 +- src/dev-tools/src/ModelMaker.php | 53 +- src/event-bus/src/BootProcessListener.php | 14 +- .../src/Controller/PushController.php | 1 - src/event-bus/src/Kafka.php | 20 +- src/event-bus/src/OnPipeMessageListener.php | 2 +- src/event-bus/src/ProcessFactory.php | 25 +- .../src/AmqpConsumerManager.php | 20 +- .../src/BootProcessListener.php | 14 +- .../src/NsqConsumerManager.php | 22 +- src/rule-engine/src/ArrayHelper.php | 2 +- src/rule-engine/src/BooleanOperation.php | 21 +- src/rule-engine/src/Context/Context.php | 10 +- .../src/Context/ContextPluginAbstract.php | 6 +- src/rule-engine/src/Context/IpContext.php | 4 +- src/validation/src/Validation.php | 43 +- src/validation/src/ValidationCustomRule.php | 6 +- 76 files changed, 4126 insertions(+), 1678 deletions(-) create mode 100644 rector.php diff --git a/composer.json b/composer.json index ddd32ae..54aa05c 100644 --- a/composer.json +++ b/composer.json @@ -1,133 +1,136 @@ { - "name": "singularity/hyperf-admin", - "description": "hyperf-admin", - "authors": [ - { - "name": "ch4o5", - "email": "dongyun.li@luxcreo.ai" - }, - { - "name": "daodao97", - "email": "daodao97@foxmail.com" - } + "name": "singularity/hyperf-admin", + "description": "hyperf-admin", + "authors": [ + { + "name": "ch4o5", + "email": "dongyun.li@luxcreo.ai" + }, + { + "name": "daodao97", + "email": "daodao97@foxmail.com" + } + ], + "require": { + "php": ">=8.2", + "ext-json": "*", + "ext-pdo": "*", + "ext-swoole": ">=4.4", + "aliyuncs/oss-sdk-php": "^2.3", + "box/spout": "^3.1", + "hyperf/amqp": "~2.2.0", + "hyperf/async-queue": "~2.2.0", + "hyperf/cache": "~2.2.0", + "hyperf/command": "~2.2.0", + "hyperf/config": "~2.2.0", + "hyperf/constants": "~2.2.0", + "hyperf/crontab": "~2.2.0", + "hyperf/database": "~2.2.0", + "hyperf/db-connection": "~2.2.0", + "hyperf/filesystem": "^2.0", + "hyperf/framework": "~2.2.0", + "hyperf/guzzle": "~2.2.0", + "hyperf/http-server": "~2.2.0", + "hyperf/logger": "~2.2.0", + "hyperf/memory": "~2.2.0", + "hyperf/metric": "~2.2.0", + "hyperf/nsq": "~2.2.0", + "hyperf/process": "~2.2.0", + "hyperf/redis": "~2.2.0", + "hyperf/snowflake": "~2.2.0", + "hyperf/validation": "~2.2.0", + "nette/php-generator": "^3.4", + "singularity/hdk-core": "^0.1.6", + "xxtime/flysystem-aliyun-oss": "~1.5.0", + "yadakhov/insert-on-duplicate-key": "^1.2", + "zoujingli/ip2region": "^1.0" + }, + "replace": { + "hyperf-admin/base-utils": "self.version", + "hyperf-admin/admin": "self.version", + "hyperf-admin/alert-manager": "self.version", + "hyperf-admin/cron-center": "self.version", + "hyperf-admin/event-bus": "self.version", + "hyperf-admin/process-manager": "self.version", + "hyperf-admin/rule-engine": "self.version", + "hyperf-admin/validation": "self.version", + "hyperf-admin/workflow": "self.version", + "hyperf-admin/data-focus": "self.version", + "hyperf-admin/dev-tools": "self.version" + }, + "autoload": { + "psr-4": { + "HyperfAdmin\\BaseUtils\\": "src/base-utils/src", + "HyperfAdmin\\Admin\\": "src/admin/src", + "HyperfAdmin\\AlertManager\\": "src/alert-manager/src", + "HyperfAdmin\\CronCenter\\": "src/cron-center/src", + "HyperfAdmin\\DataFocus\\": "src/data-focus/src", + "HyperfAdmin\\DevTools\\": "src/dev-tools/src", + "HyperfAdmin\\EventBus\\": "src/event-bus/src", + "HyperfAdmin\\ProcessManager\\": "src/process-manager/src", + "HyperfAdmin\\RuleEngine\\": "src/rule-engine/src", + "HyperfAdmin\\Validation\\": "src/validation/src", + "HyperfAdmin\\ConfigCenter\\": "src/config-center/src" + }, + "files": [ + "src/base-utils/src/Helper/array.php", + "src/base-utils/src/Helper/common.php", + "src/base-utils/src/Helper/constants.php", + "src/base-utils/src/Helper/system.php", + "src/data-focus/src/Util/func.php", + "src/event-bus/src/funcs.php", + "src/admin/src/funcs/common.php", + "src/data-focus/src/Util/SimpleHtmlDom.php" ], - "require": { - "php": ">=7.4", - "ext-json": "*", - "ext-pdo": "*", - "ext-swoole": ">=4.4", - "aliyuncs/oss-sdk-php": "^2.3", - "box/spout": "^3.1", - "hyperf/amqp": "~2.2.0", - "hyperf/async-queue": "~2.2.0", - "hyperf/cache": "~2.2.0", - "hyperf/command": "~2.2.0", - "hyperf/config": "~2.2.0", - "hyperf/constants": "~2.2.0", - "hyperf/crontab": "~2.2.0", - "hyperf/database": "~2.2.0", - "hyperf/db-connection": "~2.2.0", - "hyperf/filesystem": "^2.0", - "hyperf/framework": "~2.2.0", - "hyperf/guzzle": "~2.2.0", - "hyperf/http-server": "~2.2.0", - "hyperf/logger": "~2.2.0", - "hyperf/memory": "~2.2.0", - "hyperf/metric": "~2.2.0", - "hyperf/nsq": "~2.2.0", - "hyperf/process": "~2.2.0", - "hyperf/redis": "~2.2.0", - "hyperf/snowflake": "~2.2.0", - "hyperf/validation": "~2.2.0", - "nette/php-generator": "^3.4", - "singularity/hdk-core": "^0.1.6", - "xxtime/flysystem-aliyun-oss": "~1.5.0", - "yadakhov/insert-on-duplicate-key": "^1.2", - "zoujingli/ip2region": "^1.0" + "classmap": [ + "src/base-utils/src/classmap" + ] + }, + "extra": { + "hyperf": { + "config": [ + "HyperfAdmin\\Admin\\ConfigProvider", + "HyperfAdmin\\BaseUtils\\ConfigProvider@99", + "HyperfAdmin\\AlertManager\\ConfigProvider", + "HyperfAdmin\\CronCenter\\ConfigProvider", + "HyperfAdmin\\DataFocus\\ConfigProvider", + "HyperfAdmin\\DevTools\\ConfigProvider", + "HyperfAdmin\\EventBus\\ConfigProvider", + "HyperfAdmin\\ProcessManager\\ConfigProvider", + "HyperfAdmin\\ConfigCenter\\ConfigProvider" + ] + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "config": { + "sort-packages": true, + "secure-http": false + }, + "scripts": { + "post-root-package-install": [], + "test": "vendor/bin/pest $1", + "cs-fix": "vendor/bin/php-cs-fixer fix $1 --rules=@PSR12 --allow-risky=yes", + "analyse": "vendor/bin/phpstan analyse $1", + "ci": [ + "@analyse publish/ src/ tests/", + "@cs-fix", + "@test --ci", + "echo CI Success" + ] + }, + "repositories": { + "nest": { + "type": "composer", + "url": "https://nest.doylee.cn/api/packages/HDK/composer" }, - "replace": { - "hyperf-admin/base-utils": "self.version", - "hyperf-admin/admin": "self.version", - "hyperf-admin/alert-manager": "self.version", - "hyperf-admin/cron-center": "self.version", - "hyperf-admin/event-bus": "self.version", - "hyperf-admin/process-manager": "self.version", - "hyperf-admin/rule-engine": "self.version", - "hyperf-admin/validation": "self.version", - "hyperf-admin/workflow": "self.version", - "hyperf-admin/data-focus": "self.version", - "hyperf-admin/dev-tools": "self.version" - }, - "autoload": { - "psr-4": { - "HyperfAdmin\\BaseUtils\\": "src/base-utils/src", - "HyperfAdmin\\Admin\\": "src/admin/src", - "HyperfAdmin\\AlertManager\\": "src/alert-manager/src", - "HyperfAdmin\\CronCenter\\": "src/cron-center/src", - "HyperfAdmin\\DataFocus\\": "src/data-focus/src", - "HyperfAdmin\\DevTools\\": "src/dev-tools/src", - "HyperfAdmin\\EventBus\\": "src/event-bus/src", - "HyperfAdmin\\ProcessManager\\": "src/process-manager/src", - "HyperfAdmin\\RuleEngine\\": "src/rule-engine/src", - "HyperfAdmin\\Validation\\": "src/validation/src", - "HyperfAdmin\\ConfigCenter\\": "src/config-center/src" - }, - "files": [ - "src/base-utils/src/Helper/array.php", - "src/base-utils/src/Helper/common.php", - "src/base-utils/src/Helper/constants.php", - "src/base-utils/src/Helper/system.php", - "src/data-focus/src/Util/func.php", - "src/event-bus/src/funcs.php", - "src/admin/src/funcs/common.php", - "src/data-focus/src/Util/SimpleHtmlDom.php" - ], - "classmap": [ - "src/base-utils/src/classmap" - ] - }, - "extra": { - "hyperf": { - "config": [ - "HyperfAdmin\\Admin\\ConfigProvider", - "HyperfAdmin\\BaseUtils\\ConfigProvider@99", - "HyperfAdmin\\AlertManager\\ConfigProvider", - "HyperfAdmin\\CronCenter\\ConfigProvider", - "HyperfAdmin\\DataFocus\\ConfigProvider", - "HyperfAdmin\\DevTools\\ConfigProvider", - "HyperfAdmin\\EventBus\\ConfigProvider", - "HyperfAdmin\\ProcessManager\\ConfigProvider", - "HyperfAdmin\\ConfigCenter\\ConfigProvider" - ] - } - }, - "minimum-stability": "dev", - "prefer-stable": true, - "config": { - "sort-packages": true, - "secure-http": false - }, - "scripts": { - "post-root-package-install": [], - "test": "vendor/bin/pest $1", - "cs-fix": "vendor/bin/php-cs-fixer fix $1 --rules=@PSR12 --allow-risky=yes", - "analyse": "vendor/bin/phpstan analyse $1", - "ci": [ - "@analyse publish/ src/ tests/", - "@cs-fix", - "@test --ci", - "echo CI Success" - ] - }, - "repositories": { - "lux-map": { - "type": "composer", - "url": "https://satis.luxcreo.cn/" - }, - "packagist": { - "type": "composer", - "url": "https://mirrors.cloud.tencent.com/composer/" - } - }, - "version": "0.5.1" + "packagist": { + "type": "composer", + "url": "https://mirrors.aliyun.com/composer/" + } + }, + "version": "0.5.1", + "require-dev": { + "rector/rector": "^2.0" + } } diff --git a/composer.lock b/composer.lock index ee255e7..f111d28 100644 --- a/composer.lock +++ b/composer.lock @@ -4,23 +4,34 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "64b5fa395a965c4194ea73b14d68a264", + "content-hash": "e19693cb62f8eeb86e921c123ab356e8", "packages": [ { "name": "aliyuncs/oss-sdk-php", - "version": "v2.6.0", + "version": "v2.7.2", + "source": { + "type": "git", + "url": "https://github.com/aliyun/aliyun-oss-php-sdk.git", + "reference": "483dd0b8bff5d47f0e4ffc99f6077a295c5ccbb5" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/aliyuncs/oss-sdk-php/v2.6.0/aliyuncs-oss-sdk-php-v2.6.0.zip", - "reference": "572d0f8e099e8630ae7139ed3fdedb926c7a760f", - "shasum": "" + "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/483dd0b8bff5d47f0e4ffc99f6077a295c5ccbb5", + "reference": "483dd0b8bff5d47f0e4ffc99f6077a295c5ccbb5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.3" }, "require-dev": { - "phpunit/phpunit": "*", - "satooshi/php-coveralls": "*" + "php-coveralls/php-coveralls": "*", + "phpunit/phpunit": "*" }, "type": "library", "autoload": { @@ -28,6 +39,7 @@ "OSS\\": "src/OSS" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -39,16 +51,31 @@ ], "description": "Aliyun OSS SDK for PHP", "homepage": "http://www.aliyun.com/product/oss/", - "time": "2022-08-03T08:06:01+00:00" + "support": { + "issues": "https://github.com/aliyun/aliyun-oss-php-sdk/issues", + "source": "https://github.com/aliyun/aliyun-oss-php-sdk/tree/v2.7.2" + }, + "time": "2024-10-28T10:41:12+00:00" }, { "name": "box/spout", "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/box/spout.git", + "reference": "9bdb027d312b732515b884a341c0ad70372c6295" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/box/spout/v3.3.0/box-spout-v3.3.0.zip", + "url": "https://api.github.com/repos/box/spout/zipball/9bdb027d312b732515b884a341c0ad70372c6295", "reference": "9bdb027d312b732515b884a341c0ad70372c6295", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-dom": "*", @@ -75,6 +102,7 @@ "Box\\Spout\\": "src/Spout" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -103,27 +131,118 @@ "write", "xlsx" ], + "support": { + "issues": "https://github.com/box/spout/issues", + "source": "https://github.com/box/spout/tree/v3.3.0" + }, + "abandoned": true, "time": "2021-05-14T21:18:09+00:00" }, { - "name": "composer/ca-bundle", - "version": "1.3.5", + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/composer/ca-bundle/1.3.5/composer-ca-bundle-1.3.5.zip", - "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd", - "shasum": "" + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "composer/ca-bundle", + "version": "1.5.7", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "d665d22c417056996c59019579f1967dfe5c1e82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d665d22c417056996c59019579f1967dfe5c1e82", + "reference": "d665d22c417056996c59019579f1967dfe5c1e82", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-openssl": "*", "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8 || ^9", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { @@ -136,6 +255,7 @@ "Composer\\CaBundle\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -154,29 +274,59 @@ "ssl", "tls" ], - "time": "2023-01-11T08:27:00+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.5.7" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2025-05-26T15:08:54+00:00" }, { "name": "composer/class-map-generator", - "version": "1.0.0", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/composer/class-map-generator.git", + "reference": "134b705ddb0025d397d8318a75825fe3c9d1da34" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/composer/class-map-generator/1.0.0/composer-class-map-generator-1.0.0.zip", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513", - "shasum": "" + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/134b705ddb0025d397d8318a75825fe3c9d1da34", + "reference": "134b705ddb0025d397d8318a75825fe3c9d1da34", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "composer/pcre": "^2 || ^3", + "composer/pcre": "^2.1 || ^3.1", "php": "^7.2 || ^8.0", - "symfony/finder": "^4.4 || ^5.3 || ^6" + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" }, "require-dev": { - "phpstan/phpstan": "^1.6", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/filesystem": "^5.4 || ^6", - "symfony/phpunit-bridge": "^5" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-deprecation-rules": "^1 || ^2", + "phpstan/phpstan-phpunit": "^1 || ^2", + "phpstan/phpstan-strict-rules": "^1.1 || ^2", + "phpunit/phpunit": "^8", + "symfony/filesystem": "^5.4 || ^6" }, "type": "library", "extra": { @@ -189,6 +339,7 @@ "Composer\\ClassMapGenerator\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -203,47 +354,76 @@ "keywords": [ "classmap" ], - "time": "2022-06-19T11:31:27+00:00" + "support": { + "issues": "https://github.com/composer/class-map-generator/issues", + "source": "https://github.com/composer/class-map-generator/tree/1.6.1" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2025-03-24T13:50:44+00:00" }, { "name": "composer/composer", - "version": "2.5.5", + "version": "2.7.7", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "291942978f39435cf904d33739f98d7d4eca7b23" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/composer/composer/2.5.5/composer-composer-2.5.5.zip", - "reference": "c7cffaad16a60636a776017eac5bd8cd0095c32f", - "shasum": "" + "url": "https://api.github.com/repos/composer/composer/zipball/291942978f39435cf904d33739f98d7d4eca7b23", + "reference": "291942978f39435cf904d33739f98d7d4eca7b23", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "composer/ca-bundle": "^1.0", - "composer/class-map-generator": "^1.0", + "composer/class-map-generator": "^1.3.3", "composer/metadata-minifier": "^1.0", "composer/pcre": "^2.1 || ^3.1", - "composer/semver": "^3.0", + "composer/semver": "^3.3", "composer/spdx-licenses": "^1.5.7", "composer/xdebug-handler": "^2.0.2 || ^3.0.3", "justinrainbow/json-schema": "^5.2.11", "php": "^7.2.5 || ^8.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "react/promise": "^2.8", + "react/promise": "^2.8 || ^3", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", + "symfony/console": "^5.4.11 || ^6.0.11 || ^7", + "symfony/filesystem": "^5.4 || ^6.0 || ^7", + "symfony/finder": "^5.4 || ^6.0 || ^7", "symfony/polyfill-php73": "^1.24", "symfony/polyfill-php80": "^1.24", "symfony/polyfill-php81": "^1.24", - "symfony/process": "^5.4 || ^6.0" + "symfony/process": "^5.4 || ^6.0 || ^7" }, "require-dev": { - "phpstan/phpstan": "^1.9.3", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1", - "phpstan/phpstan-symfony": "^1.2.10", - "symfony/phpunit-bridge": "^6.0" + "phpstan/phpstan": "^1.11.0", + "phpstan/phpstan-deprecation-rules": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.4.0", + "phpstan/phpstan-strict-rules": "^1.6.0", + "phpstan/phpstan-symfony": "^1.4.0", + "symfony/phpunit-bridge": "^6.4.1 || ^7.0.1" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -255,20 +435,21 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "phpstan": { "includes": [ "phpstan/rules.neon" ] + }, + "branch-alias": { + "dev-main": "2.7-dev" } }, "autoload": { "psr-4": { - "Composer\\": "src/Composer" + "Composer\\": "src/Composer/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -291,16 +472,47 @@ "dependency", "package" ], - "time": "2023-03-21T10:50:05+00:00" + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/composer/issues", + "security": "https://github.com/composer/composer/security/policy", + "source": "https://github.com/composer/composer/tree/2.7.7" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-06-10T20:11:12+00:00" }, { "name": "composer/metadata-minifier", "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/metadata-minifier.git", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/composer/metadata-minifier/1.0.0/composer-metadata-minifier-1.0.0.zip", + "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", "reference": "c549d23829536f0d0e984aaabbf02af91f443207", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" @@ -321,6 +533,7 @@ "Composer\\MetadataMinifier\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -336,29 +549,66 @@ "composer", "compression" ], + "support": { + "issues": "https://github.com/composer/metadata-minifier/issues", + "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], "time": "2021-04-07T13:37:33+00:00" }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/composer/pcre/3.1.0/composer-pcre-3.1.0.zip", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "shasum": "" + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { "branch-alias": { "dev-main": "3.x-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -366,6 +616,7 @@ "Composer\\Pcre\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -383,23 +634,52 @@ "regex", "regular expression" ], - "time": "2022-11-17T09:50:14+00:00" + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/composer/semver/3.3.2/composer-semver-3.3.2.zip", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", - "shasum": "" + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -412,6 +692,7 @@ "Composer\\Semver\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -439,16 +720,46 @@ "validation", "versioning" ], - "time": "2022-04-01T19:23:25+00:00" + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-09-19T14:15:21+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.7", + "version": "1.5.8", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/composer/spdx-licenses/1.5.7/composer-spdx-licenses-1.5.7.zip", - "reference": "c848241796da2abf65837d51dce1fae55a960149", - "shasum": "" + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" @@ -468,6 +779,7 @@ "Composer\\Spdx\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -494,16 +806,46 @@ "spdx", "validator" ], - "time": "2022-05-23T07:37:50+00:00" + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-11-20T07:44:33+00:00" }, { "name": "composer/xdebug-handler", "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ced299686f41dce890debac69273b47ffe98a40c" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/composer/xdebug-handler/3.0.3/composer-xdebug-handler-3.0.3.zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "composer/pcre": "^1 || ^2 || ^3", @@ -521,6 +863,7 @@ "Composer\\XdebugHandler\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -535,16 +878,46 @@ "Xdebug", "performance" ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], "time": "2022-02-25T21:32:43+00:00" }, { "name": "doctrine/annotations", "version": "1.14.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/doctrine/annotations/1.14.3/doctrine-annotations-1.14.3.zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/lexer": "^1 || ^2", @@ -569,6 +942,7 @@ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -601,24 +975,41 @@ "docblock", "parser" ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.14.3" + }, "time": "2023-02-01T09:20:38+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/doctrine/deprecations/v1.0.0/doctrine-deprecations-v1.0.0.zip", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "shasum": "" + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -626,35 +1017,51 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", "homepage": "https://www.doctrine-project.org/", - "time": "2022-05-02T15:47:09+00:00" + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + }, + "time": "2024-12-07T21:18:45+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.6", + "version": "2.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/doctrine/inflector/2.0.6/doctrine-inflector-2.0.6.zip", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", - "shasum": "" + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^11.0", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25" + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -662,6 +1069,7 @@ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -701,16 +1109,45 @@ "uppercase", "words" ], - "time": "2022-10-20T09:10:12+00:00" + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/instantiator", "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/doctrine/instantiator/1.5.0/doctrine-instantiator-1.5.0.zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0" @@ -731,6 +1168,7 @@ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -747,27 +1185,56 @@ "constructor", "instantiate" ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], "time": "2022-12-30T00:15:36+00:00" }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/doctrine/lexer/2.1.0/doctrine-lexer-2.1.0.zip", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "shasum": "" + "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", + "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^4.11 || ^5.21" }, "type": "library", "autoload": { @@ -775,6 +1242,7 @@ "Doctrine\\Common\\Lexer\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -801,16 +1269,45 @@ "parser", "php" ], - "time": "2022-12-14T08:49:07+00:00" + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/2.1.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:35:39+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.5", + "version": "3.2.6", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7" + }, "dist": { "type": "zip", - "url": "https://mirrors.tencent.com/repository/composer/egulias/email-validator/3.2.5/egulias-email-validator-3.2.5.zip", - "reference": "b531a2311709443320c786feb4519cfaf94af796", - "shasum": "" + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/lexer": "^1.2|^2", @@ -835,6 +1332,7 @@ "Egulias\\EmailValidator\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -852,31 +1350,60 @@ "validation", "validator" ], - "time": "2023-01-02T17:26:14+00:00" + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-06-01T07:04:22+00:00" }, { "name": "ergebnis/http-method", - "version": "2.2.0", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/ergebnis/http-method.git", + "reference": "49e4ef59b4740c0ce43d08965bbb6752b1c3cc44" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/ergebnis/http-method/2.2.0/ergebnis-http-method-2.2.0.zip", - "reference": "d5211663783f2d2be21b10f5279c70defcd20976", - "shasum": "" + "url": "https://api.github.com/repos/ergebnis/http-method/zipball/49e4ef59b4740c0ce43d08965bbb6752b1c3cc44", + "reference": "49e4ef59b4740c0ce43d08965bbb6752b1c3cc44", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": "^7.4 || ^8.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { - "ergebnis/composer-normalize": "^2.18.0", - "ergebnis/license": "^1.1.0", - "ergebnis/php-cs-fixer-config": "^3.4.0", - "ergebnis/test-util": "^1.5.0", - "phpunit/phpunit": "^9.5.11", - "psalm/plugin-phpunit": "~0.16.1", - "vimeo/psalm": "^4.16.1" + "ergebnis/composer-normalize": "^2.48.1", + "ergebnis/license": "^2.7.0", + "ergebnis/php-cs-fixer-config": "^6.53.0", + "ergebnis/phpunit-slow-test-detector": "^2.20.0", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.10", + "phpstan/phpstan-deprecation-rules": "^1.2.1", + "phpstan/phpstan-phpunit": "^1.4.0", + "phpstan/phpstan-strict-rules": "^1.6.1", + "phpunit/phpunit": "^10.5.26", + "rector/rector": "^1.2.10", + "roave/backward-compatibility-check": "^8.6.0" }, "type": "library", "extra": { + "branch-alias": { + "dev-main": "2.6-dev" + }, "composer-normalize": { "indent-size": 2, "indent-style": "space" @@ -887,13 +1414,15 @@ "Ergebnis\\Http\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Andreas Möller", - "email": "am@localheinz.com" + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" } ], "description": "Provides constants for HTTP request methods.", @@ -903,16 +1432,32 @@ "method", "request" ], - "time": "2021-12-28T10:07:19+00:00" + "support": { + "issues": "https://github.com/ergebnis/http-method/issues", + "security": "https://github.com/ergebnis/http-method/blob/main/.github/SECURITY.md", + "source": "https://github.com/ergebnis/http-method" + }, + "time": "2025-09-02T08:26:08+00:00" }, { "name": "fig/http-message-util", "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/fig/http-message-util/1.1.5/fig-http-message-util-1.1.5.zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3 || ^7.0 || ^8.0" @@ -931,6 +1476,7 @@ "Fig\\Http\\Message\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -949,30 +1495,47 @@ "request", "response" ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + }, "time": "2020-11-24T22:02:12+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.1", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "9d6c1d7ce69a3329936e603617e59ba205ab0a66" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/graham-campbell/result-type/v1.1.1/graham-campbell-result-type-v1.1.1.zip", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "shasum": "" + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/9d6c1d7ce69a3329936e603617e59ba205ab0a66", + "reference": "9d6c1d7ce69a3329936e603617e59ba205ab0a66", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" + "phpoption/phpoption": "^1.9.3" }, "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { "GrahamCampbell\\ResultType\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -991,21 +1554,46 @@ "Result-Type", "result" ], - "time": "2023-02-25T20:23:15+00:00" + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/1.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2025-02-09T22:43:44+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.5.0", + "version": "7.9.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/guzzlehttp/guzzle/7.5.0/guzzlehttp-guzzle-7.5.0.zip", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "shasum": "" + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1014,10 +1602,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1030,9 +1619,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" } }, "autoload": { @@ -1043,6 +1629,7 @@ "GuzzleHttp\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1095,37 +1682,66 @@ "rest", "web service" ], - "time": "2022-08-28T15:39:27+00:00" + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2024-07-24T11:22:20+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "481557b130ef3790cf82b713667b43030dc9c957" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/guzzlehttp/promises/1.5.2/guzzlehttp-promises-1.5.2.zip", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", - "shasum": "" + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1155,21 +1771,50 @@ "keywords": [ "promise" ], - "time": "2022-08-28T14:55:35+00:00" + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.4", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "21dc724a0583619cd1652f673303492272778051" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/guzzlehttp/psr7/2.4.4/guzzlehttp-psr7-2.4.4.zip", - "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf", - "shasum": "" + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -1177,9 +1822,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1189,9 +1834,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "2.4-dev" } }, "autoload": { @@ -1199,6 +1841,7 @@ "GuzzleHttp\\Psr7\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1250,16 +1893,45 @@ "uri", "url" ], - "time": "2023-03-09T13:19:02+00:00" + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.8.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-08-23T21:21:41+00:00" }, { "name": "hyperf/amqp", "version": "v2.2.37", + "source": { + "type": "git", + "url": "https://github.com/hyperf/amqp.git", + "reference": "01b18eb54909629ea22f35140a77c12f1ae8cde0" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/amqp/v2.2.37/hyperf-amqp-v2.2.37.zip", + "url": "https://api.github.com/repos/hyperf/amqp/zipball/01b18eb54909629ea22f35140a77c12f1ae8cde0", "reference": "01b18eb54909629ea22f35140a77c12f1ae8cde0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/instantiator": "^1.2.0", @@ -1279,11 +1951,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Amqp\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1291,6 +1963,7 @@ "Hyperf\\Amqp\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1301,16 +1974,33 @@ "hyperf", "php" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2023-01-19T06:44:45+00:00" }, { "name": "hyperf/async-queue", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/async-queue.git", + "reference": "6e8da55c8b19322023d5fdd970bcbddf774e79f0" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/async-queue/v2.2.33/hyperf-async-queue-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/async-queue/zipball/6e8da55c8b19322023d5fdd970bcbddf774e79f0", "reference": "6e8da55c8b19322023d5fdd970bcbddf774e79f0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/command": "~2.2.0", @@ -1328,11 +2018,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\AsyncQueue\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1340,6 +2030,7 @@ "Hyperf\\AsyncQueue\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1350,16 +2041,33 @@ "hyperf", "php" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/cache", - "version": "v2.2.33", + "version": "v2.2.40", + "source": { + "type": "git", + "url": "https://github.com/hyperf/cache.git", + "reference": "118ca172828d51f5eea6e3d654df6275705ddeef" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/cache/v2.2.33/hyperf-cache-v2.2.33.zip", - "reference": "5d133778db7b38bd40be8ef970dcb2d75a5b68ed", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/cache/zipball/118ca172828d51f5eea6e3d654df6275705ddeef", + "reference": "118ca172828d51f5eea6e3d654df6275705ddeef", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -1374,11 +2082,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Cache\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1386,6 +2094,7 @@ "Hyperf\\Cache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1396,16 +2105,33 @@ "hyperf", "php" ], - "time": "2022-05-24T13:10:54+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "time": "2023-06-19T10:24:33+00:00" }, { "name": "hyperf/command", "version": "v2.2.35", + "source": { + "type": "git", + "url": "https://github.com/hyperf/command.git", + "reference": "48cd9789166ecf5f3009de45bcf128b997ec5f88" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/command/v2.2.35/hyperf-command-v2.2.35.zip", + "url": "https://api.github.com/repos/hyperf/command/zipball/48cd9789166ecf5f3009de45bcf128b997ec5f88", "reference": "48cd9789166ecf5f3009de45bcf128b997ec5f88", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/utils": "~2.2.0", @@ -1427,6 +2153,7 @@ "Hyperf\\Command\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1436,16 +2163,31 @@ "php", "swoole" ], + "support": { + "issues": "https://github.com/hyperf/command/issues", + "source": "https://github.com/hyperf/command/tree/v2.2.35" + }, "time": "2022-08-27T07:28:56+00:00" }, { "name": "hyperf/config", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/config.git", + "reference": "9437f45aea36358840c907691e9b28492550e9a3" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/config/v2.2.33/hyperf-config-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/config/zipball/9437f45aea36358840c907691e9b28492550e9a3", "reference": "9437f45aea36358840c907691e9b28492550e9a3", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -1462,11 +2204,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Config\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1477,6 +2219,7 @@ "Hyperf\\Config\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1489,16 +2232,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/constants", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/constants.git", + "reference": "adb652d446bde384af9ad907cfabe900f3dd08b8" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/constants/v2.2.33/hyperf-constants-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/constants/zipball/adb652d446bde384af9ad907cfabe900f3dd08b8", "reference": "adb652d446bde384af9ad907cfabe900f3dd08b8", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/di": "~2.2.0", @@ -1510,11 +2270,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Constants\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1522,6 +2282,7 @@ "Hyperf\\Constants\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1532,16 +2293,33 @@ "hyperf", "php" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/context", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/context.git", + "reference": "f2e77442693a07d47f7ca97f8b2fdb8e17196a47" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/context/v2.2.33/hyperf-context-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/context/zipball/f2e77442693a07d47f7ca97f8b2fdb8e17196a47", "reference": "f2e77442693a07d47f7ca97f8b2fdb8e17196a47", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/engine": "^1.1", @@ -1558,6 +2336,7 @@ "Hyperf\\Context\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1569,16 +2348,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/contract", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/contract.git", + "reference": "1ebf037c91d76ec05af9e5cb3335b0f5ec810e27" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/contract/v2.2.33/hyperf-contract-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/contract/zipball/1ebf037c91d76ec05af9e5cb3335b0f5ec810e27", "reference": "1ebf037c91d76ec05af9e5cb3335b0f5ec810e27", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2" @@ -1594,6 +2390,7 @@ "Hyperf\\Contract\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1604,16 +2401,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/crontab", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/crontab.git", + "reference": "64e1a6db961fdf46a111ec172956abb5a386511c" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/crontab/v2.2.33/hyperf-crontab-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/crontab/zipball/64e1a6db961fdf46a111ec172956abb5a386511c", "reference": "64e1a6db961fdf46a111ec172956abb5a386511c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/utils": "~2.2.0", @@ -1622,11 +2436,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Crontab\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1634,6 +2448,7 @@ "Hyperf\\Crontab\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1645,16 +2460,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/database", - "version": "v2.2.39", + "version": "v2.2.41", + "source": { + "type": "git", + "url": "https://github.com/hyperf/database.git", + "reference": "b4c8f8e8f417b11754d4e94fedafc7eec273b188" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/database/v2.2.39/hyperf-database-v2.2.39.zip", - "reference": "6105b9539aa4db7d615b2fef2687655a7a5df56c", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/database/zipball/b4c8f8e8f417b11754d4e94fedafc7eec273b188", + "reference": "b4c8f8e8f417b11754d4e94fedafc7eec273b188", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/macroable": "~2.2.0", @@ -1680,6 +2512,7 @@ "Hyperf\\Database\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1690,16 +2523,43 @@ "hyperf", "php" ], - "time": "2023-02-09T02:50:06+00:00" + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, + "funding": [ + { + "url": "https://hyperf.wiki/#/zh-cn/donate", + "type": "custom" + }, + { + "url": "https://opencollective.com/hyperf", + "type": "open_collective" + } + ], + "time": "2024-05-16T12:32:45+00:00" }, { "name": "hyperf/db-connection", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/db-connection.git", + "reference": "05d2a1e858f01682739e066430b339a9bcdef837" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/db-connection/v2.2.33/hyperf-db-connection-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/db-connection/zipball/05d2a1e858f01682739e066430b339a9bcdef837", "reference": "05d2a1e858f01682739e066430b339a9bcdef837", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/database": "~2.2.0", @@ -1712,11 +2572,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\DbConnection\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1724,6 +2584,7 @@ "Hyperf\\DbConnection\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1735,16 +2596,33 @@ "hyperf", "php" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/di", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/di.git", + "reference": "471c3cf9e0c02ab3aaa0c6e9884062bd541e4577" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/di/v2.2.33/hyperf-di-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/di/zipball/471c3cf9e0c02ab3aaa0c6e9884062bd541e4577", "reference": "471c3cf9e0c02ab3aaa0c6e9884062bd541e4577", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/annotations": "^1.6", @@ -1762,11 +2640,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Di\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1774,6 +2652,7 @@ "Hyperf\\Di\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1786,16 +2665,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/dispatcher", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/dispatcher.git", + "reference": "bcffa8faa11367204c4e00e93f6425d600603e03" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/dispatcher/v2.2.33/hyperf-dispatcher-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/dispatcher/zipball/bcffa8faa11367204c4e00e93f6425d600603e03", "reference": "bcffa8faa11367204c4e00e93f6425d600603e03", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -1806,11 +2702,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Dispatcher\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1818,6 +2714,7 @@ "Hyperf\\Dispatcher\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1831,23 +2728,41 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/engine", - "version": "v1.2.2", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/hyperf/engine.git", + "reference": "79f74c18be466059bed1abc9b9db5920516c6258" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/engine/v1.2.2/hyperf-engine-v1.2.2.zip", - "reference": "12fdb2b4cec9ee92fc808321a7378cc6251e52cd", - "shasum": "" + "url": "https://api.github.com/repos/hyperf/engine/zipball/79f74c18be466059bed1abc9b9db5920516c6258", + "reference": "79f74c18be466059bed1abc9b9db5920516c6258", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.4" + "php": ">=8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.0", - "hyperf/guzzle": "^2.2", + "hyperf/guzzle": "^2.2||^3.0", + "hyperf/http-message": " ^2.0||^3.0", "phpstan/phpstan": "^1.0", "phpunit/phpunit": "^9.4", "swoole/ide-helper": "dev-master" @@ -1857,8 +2772,11 @@ }, "type": "library", "extra": { + "hyperf": { + "config": "Hyperf\\Engine\\ConfigProvider" + }, "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -1866,6 +2784,7 @@ "Hyperf\\Engine\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1873,16 +2792,41 @@ "hyperf", "php" ], - "time": "2022-08-06T05:25:43+00:00" + "support": { + "issues": "https://github.com/hyperf/engine/issues", + "source": "https://github.com/hyperf/engine/tree/v1.11.0" + }, + "funding": [ + { + "url": "https://hyperf.wiki/#/zh-cn/donate", + "type": "custom" + }, + { + "url": "https://opencollective.com/hyperf", + "type": "open_collective" + } + ], + "time": "2025-04-13T14:50:32+00:00" }, { "name": "hyperf/event", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/event.git", + "reference": "cd92f5c1218c65f29b15c4d12dcf5835e0426ac8" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/event/v2.2.33/hyperf-event-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/event/zipball/cd92f5c1218c65f29b15c4d12dcf5835e0426ac8", "reference": "cd92f5c1218c65f29b15c4d12dcf5835e0426ac8", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -1894,11 +2838,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Event\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1906,6 +2850,7 @@ "Hyperf\\Event\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1917,16 +2862,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/exception-handler", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/exception-handler.git", + "reference": "4ec8f6debf530b661bb2b436ef96da53ce0abbdc" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/exception-handler/v2.2.33/hyperf-exception-handler-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/exception-handler/zipball/4ec8f6debf530b661bb2b436ef96da53ce0abbdc", "reference": "4ec8f6debf530b661bb2b436ef96da53ce0abbdc", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -1938,11 +2900,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\ExceptionHandler\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -1950,6 +2912,7 @@ "Hyperf\\ExceptionHandler\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -1960,16 +2923,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/filesystem", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/filesystem.git", + "reference": "58fe056bf50f732482fe4bd8946a8e3b9a1640d3" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/filesystem/v2.2.33/hyperf-filesystem-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/filesystem/zipball/58fe056bf50f732482fe4bd8946a8e3b9a1640d3", "reference": "58fe056bf50f732482fe4bd8946a8e3b9a1640d3", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/di": "~2.2.0", @@ -1988,11 +2968,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Filesystem\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2003,6 +2983,7 @@ "Hyperf\\Filesystem\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2011,16 +2992,31 @@ "hyperf", "php" ], + "support": { + "issues": "https://github.com/hyperf/filesystem/issues", + "source": "https://github.com/hyperf/filesystem/tree/v2.2.33" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/framework", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/framework.git", + "reference": "49e98fb747214bcac79aecadda8349e70b8f2891" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/framework/v2.2.33/hyperf-framework-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/framework/zipball/49e98fb747214bcac79aecadda8349e70b8f2891", "reference": "49e98fb747214bcac79aecadda8349e70b8f2891", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "fig/http-message-util": "^1.1.2", @@ -2040,11 +3036,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Framework\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2052,6 +3048,7 @@ "Hyperf\\Framework\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2065,16 +3062,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/guzzle", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/guzzle.git", + "reference": "ef4d6b02778cf44b7f0edefd9c33a5d8d08ad48f" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/guzzle/v2.2.33/hyperf-guzzle-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/guzzle/zipball/ef4d6b02778cf44b7f0edefd9c33a5d8d08ad48f", "reference": "ef4d6b02778cf44b7f0edefd9c33a5d8d08ad48f", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "guzzlehttp/guzzle": "^6.3|^7.0", @@ -2088,11 +3102,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Guzzle\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2100,6 +3114,7 @@ "Hyperf\\Guzzle\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2110,16 +3125,31 @@ "php", "swoole" ], + "support": { + "issues": "https://github.com/hyperf/guzzle/issues", + "source": "https://github.com/hyperf/guzzle/tree/v2.2.33" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/http-message", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/http-message.git", + "reference": "d71d796177ec72fe30d116c57ed8bd8121a57b6e" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/http-message/v2.2.33/hyperf-http-message-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/http-message/zipball/d71d796177ec72fe30d116c57ed8bd8121a57b6e", "reference": "d71d796177ec72fe30d116c57ed8bd8121a57b6e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/utils": "~2.2.0", @@ -2131,11 +3161,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\HttpMessage\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2143,6 +3173,7 @@ "Hyperf\\HttpMessage\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2153,16 +3184,31 @@ "php", "swoole" ], + "support": { + "issues": "https://github.com/hyperf/http-message/issues", + "source": "https://github.com/hyperf/http-message/tree/v2.2.33" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/http-server", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/http-server.git", + "reference": "0f1f22d408de82c9f8fb3f2cf57457e319210798" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/http-server/v2.2.33/hyperf-http-server-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/http-server/zipball/0f1f22d408de82c9f8fb3f2cf57457e319210798", "reference": "0f1f22d408de82c9f8fb3f2cf57457e319210798", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2182,11 +3228,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\HttpServer\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2194,6 +3240,7 @@ "Hyperf\\HttpServer\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2206,16 +3253,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/logger", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/logger.git", + "reference": "f19929efaeca4aba2b91e7452f4f1b3245bfac51" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/logger/v2.2.33/hyperf-logger-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/logger/zipball/f19929efaeca4aba2b91e7452f4f1b3245bfac51", "reference": "f19929efaeca4aba2b91e7452f4f1b3245bfac51", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2230,11 +3294,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Logger\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2242,6 +3306,7 @@ "Hyperf\\Logger\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2252,16 +3317,33 @@ "logger", "php" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/macroable", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/macroable.git", + "reference": "e4e1b3ed614a5a9d4c24a48b0b3a554eb712af9f" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/macroable/v2.2.33/hyperf-macroable-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/macroable/zipball/e4e1b3ed614a5a9d4c24a48b0b3a554eb712af9f", "reference": "e4e1b3ed614a5a9d4c24a48b0b3a554eb712af9f", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -2277,6 +3359,7 @@ "Hyperf\\Macroable\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2288,27 +3371,44 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/memory", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/memory.git", + "reference": "8adfac46a0f52385a4ad2e8bc4f956c34cb6f25e" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/memory/v2.2.33/hyperf-memory-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/memory/zipball/8adfac46a0f52385a4ad2e8bc4f956c34cb6f25e", "reference": "8adfac46a0f52385a4ad2e8bc4f956c34cb6f25e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Memory\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2316,6 +3416,7 @@ "Hyperf\\Memory\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2327,16 +3428,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/metric", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/metric.git", + "reference": "3f5cfb5bc477821df4fd7ba248b8ae21ad4eeb6e" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/metric/v2.2.33/hyperf-metric-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/metric/zipball/3f5cfb5bc477821df4fd7ba248b8ae21ad4eeb6e", "reference": "3f5cfb5bc477821df4fd7ba248b8ae21ad4eeb6e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2359,11 +3477,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Metric\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2371,6 +3489,7 @@ "Hyperf\\Metric\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2383,16 +3502,31 @@ "prometheus", "statsd" ], + "support": { + "issues": "https://github.com/hyperf/metric/issues", + "source": "https://github.com/hyperf/metric/tree/v2.2.33" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/model-listener", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/model-listener.git", + "reference": "0ac64b517db0d9e192650cd70f81a2962cd54e63" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/model-listener/v2.2.33/hyperf-model-listener-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/model-listener/zipball/0ac64b517db0d9e192650cd70f81a2962cd54e63", "reference": "0ac64b517db0d9e192650cd70f81a2962cd54e63", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2405,11 +3539,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\ModelListener\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2417,6 +3551,7 @@ "Hyperf\\ModelListener\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2428,16 +3563,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/nsq", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/nsq.git", + "reference": "4f0e74b7d6391aec6d85172201091d9d285061cc" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/nsq/v2.2.33/hyperf-nsq-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/nsq/zipball/4f0e74b7d6391aec6d85172201091d9d285061cc", "reference": "4f0e74b7d6391aec6d85172201091d9d285061cc", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-bcmath": "*", @@ -2451,11 +3603,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Nsq\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2463,6 +3615,7 @@ "Hyperf\\Nsq\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2474,16 +3627,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/pool", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/pool.git", + "reference": "b66965453f404f09570a166e9c103a074d2dbd4e" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/pool/v2.2.33/hyperf-pool-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/pool/zipball/b66965453f404f09570a166e9c103a074d2dbd4e", "reference": "b66965453f404f09570a166e9c103a074d2dbd4e", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2493,11 +3663,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Pool\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2505,6 +3675,7 @@ "Hyperf\\Pool\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2516,16 +3687,33 @@ "php", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/process", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/process.git", + "reference": "a93b2a4bf0455e3f639649046705e7b3b6ccd137" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/process/v2.2.33/hyperf-process-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/process/zipball/a93b2a4bf0455e3f639649046705e7b3b6ccd137", "reference": "a93b2a4bf0455e3f639649046705e7b3b6ccd137", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2541,11 +3729,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Process\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2553,6 +3741,7 @@ "Hyperf\\Process\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2563,16 +3752,33 @@ "php", "process" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/redis", "version": "v2.2.37", + "source": { + "type": "git", + "url": "https://github.com/hyperf/redis.git", + "reference": "89f6c0063c69dc27adb094277947af30d2e59ad0" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/redis/v2.2.37/hyperf-redis-v2.2.37.zip", + "url": "https://api.github.com/repos/hyperf/redis/zipball/89f6c0063c69dc27adb094277947af30d2e59ad0", "reference": "89f6c0063c69dc27adb094277947af30d2e59ad0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-redis": "*", @@ -2588,11 +3794,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Redis\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2600,6 +3806,7 @@ "Hyperf\\Redis\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2611,16 +3818,33 @@ "pool", "redis" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2023-02-04T09:57:22+00:00" }, { "name": "hyperf/server", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/server.git", + "reference": "1d3364520e37777a7ed83d8bc1597da42f8d6c1b" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/server/v2.2.33/hyperf-server-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/server/zipball/1d3364520e37777a7ed83d8bc1597da42f8d6c1b", "reference": "1d3364520e37777a7ed83d8bc1597da42f8d6c1b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2637,11 +3861,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Server\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2649,6 +3873,7 @@ "Hyperf\\Server\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2660,16 +3885,33 @@ "server", "swoole" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/snowflake", "version": "v2.2.33.1", + "source": { + "type": "git", + "url": "https://github.com/hyperf/snowflake.git", + "reference": "7e982676083761f3eb8f9c5267cd2c7e1253917b" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/snowflake/v2.2.33.1/hyperf-snowflake-v2.2.33.1.zip", + "url": "https://api.github.com/repos/hyperf/snowflake/zipball/7e982676083761f3eb8f9c5267cd2c7e1253917b", "reference": "7e982676083761f3eb8f9c5267cd2c7e1253917b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2682,11 +3924,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Snowflake\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2694,6 +3936,7 @@ "Hyperf\\Snowflake\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2703,16 +3946,33 @@ "php", "snowflake" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-05-30T11:55:54+00:00" }, { "name": "hyperf/translation", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/translation.git", + "reference": "66c018e6e1605a446db212b0d3905e1d816dba77" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/translation/v2.2.33/hyperf-translation-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/translation/zipball/66c018e6e1605a446db212b0d3905e1d816dba77", "reference": "66c018e6e1605a446db212b0d3905e1d816dba77", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hyperf/contract": "~2.2.0", @@ -2723,11 +3983,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Translation\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2738,6 +3998,7 @@ "Hyperf\\Translation\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2746,16 +4007,31 @@ "hyperf", "translation" ], + "support": { + "issues": "https://github.com/hyperf/translation/issues", + "source": "https://github.com/hyperf/translation/tree/v2.2.33" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "hyperf/utils", "version": "v2.2.34", + "source": { + "type": "git", + "url": "https://github.com/hyperf/utils.git", + "reference": "9c8519392166a6c8057cc52f7d02e1ac638581f5" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/utils/v2.2.34/hyperf-utils-v2.2.34.zip", + "url": "https://api.github.com/repos/hyperf/utils/zipball/9c8519392166a6c8057cc52f7d02e1ac638581f5", "reference": "9c8519392166a6c8057cc52f7d02e1ac638581f5", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/inflector": "^2.0", @@ -2790,6 +4066,7 @@ "Hyperf\\Utils\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2801,16 +4078,33 @@ "swoole", "utils" ], + "support": { + "docs": "https://hyperf.wiki", + "issues": "https://github.com/hyperf/hyperf/issues", + "pull-request": "https://github.com/hyperf/hyperf/pulls", + "source": "https://github.com/hyperf/hyperf" + }, "time": "2022-07-21T05:42:54+00:00" }, { "name": "hyperf/validation", "version": "v2.2.33", + "source": { + "type": "git", + "url": "https://github.com/hyperf/validation.git", + "reference": "d4513923ed4cac88b4b5368bc6497b460465c1e0" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/hyperf/validation/v2.2.33/hyperf-validation-v2.2.33.zip", + "url": "https://api.github.com/repos/hyperf/validation/zipball/d4513923ed4cac88b4b5368bc6497b460465c1e0", "reference": "d4513923ed4cac88b4b5368bc6497b460465c1e0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "egulias/email-validator": "^3.0", @@ -2830,11 +4124,11 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - }, "hyperf": { "config": "Hyperf\\Validation\\ConfigProvider" + }, + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -2842,6 +4136,7 @@ "Hyperf\\Validation\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2850,27 +4145,43 @@ "hyperf", "validation" ], + "support": { + "issues": "https://github.com/hyperf/validation/issues", + "source": "https://github.com/hyperf/validation/tree/v2.2.33" + }, "time": "2022-05-24T13:10:54+00:00" }, { "name": "jean85/pretty-package-versions", - "version": "2.0.5", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/jean85/pretty-package-versions/2.0.5/jean85-pretty-package-versions-2.0.5.zip", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "shasum": "" + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", + "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", + "vimeo/psalm": "^4.3 || ^5.0" }, "type": "library", "extra": { @@ -2883,6 +4194,7 @@ "Jean85\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2899,16 +4211,31 @@ "release", "versions" ], - "time": "2021-10-08T21:21:46+00:00" + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1" + }, + "time": "2025-03-19T14:43:43+00:00" }, { "name": "jetbrains/phpstorm-attributes", - "version": "1.0", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/JetBrains/phpstorm-attributes.git", + "reference": "64de815a4509c29e00d5e3474087fd24c171afc2" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/jetbrains/phpstorm-attributes/1.0/jetbrains-phpstorm-attributes-1.0.zip", - "reference": "a7a83ae5df4dd3c0875484483de19de8edf60a9f", - "shasum": "" + "url": "https://api.github.com/repos/JetBrains/phpstorm-attributes/zipball/64de815a4509c29e00d5e3474087fd24c171afc2", + "reference": "64de815a4509c29e00d5e3474087fd24c171afc2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "type": "library", "autoload": { @@ -2916,6 +4243,7 @@ "JetBrains\\PhpStorm\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -2931,19 +4259,34 @@ "jetbrains", "phpstorm" ], - "time": "2020-11-17T11:09:47+00:00" + "support": { + "issues": "https://youtrack.jetbrains.com/newIssue?project=WI", + "source": "https://github.com/JetBrains/phpstorm-attributes/tree/1.2" + }, + "time": "2024-10-11T10:46:19+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.12", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/jsonrainbow/json-schema.git", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/justinrainbow/json-schema/5.2.12/justinrainbow-json-schema-5.2.12.zip", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "shasum": "" + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", @@ -2954,16 +4297,12 @@ "bin/validate-json" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { "psr-4": { "JsonSchema\\": "src/JsonSchema/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2991,28 +4330,43 @@ "json", "schema" ], - "time": "2022-04-13T08:02:27+00:00" + "support": { + "issues": "https://github.com/jsonrainbow/json-schema/issues", + "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0" + }, + "time": "2024-07-06T21:00:26+00:00" }, { "name": "laminas/laminas-mime", - "version": "2.10.0", + "version": "2.12.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-mime.git", + "reference": "08cc544778829b7d68d27a097885bd6e7130135e" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/laminas/laminas-mime/2.10.0/laminas-laminas-mime-2.10.0.zip", - "reference": "62a899a7c9100889c2d2386b1357003a2cb52fa9", - "shasum": "" + "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/08cc544778829b7d68d27a097885bd6e7130135e", + "reference": "08cc544778829b7d68d27a097885bd6e7130135e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-mime": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-mail": "^2.12", - "phpunit/phpunit": "^9.5" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-mail": "^2.19.0", + "phpunit/phpunit": "~9.5.25" }, "suggest": { "laminas/laminas-mail": "Laminas\\Mail component" @@ -3023,6 +4377,7 @@ "Laminas\\Mime\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3032,30 +4387,54 @@ "laminas", "mime" ], - "time": "2022-08-30T09:38:41+00:00" + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-mime/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-mime/issues", + "rss": "https://github.com/laminas/laminas-mime/releases.atom", + "source": "https://github.com/laminas/laminas-mime" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2023-11-02T16:47:19+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.13.0", + "version": "3.20.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/laminas/laminas-stdlib/3.13.0/laminas-laminas-stdlib-3.13.0.zip", - "reference": "66a6d03c381f6c9f1dd988bf8244f9afb9380d76", - "shasum": "" + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/8974a1213be42c3e2f70b2c27b17f910291ab2f4", + "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^1.2.6", - "phpstan/phpdoc-parser": "^0.5.4", - "phpunit/phpunit": "^9.5.23", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.26" + "laminas/laminas-coding-standard": "^3.0", + "phpbench/phpbench": "^1.3.1", + "phpunit/phpunit": "^10.5.38", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "type": "library", "autoload": { @@ -3063,6 +4442,7 @@ "Laminas\\Stdlib\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3072,16 +4452,41 @@ "laminas", "stdlib" ], - "time": "2022-08-24T13:56:50+00:00" + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-stdlib/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-stdlib/issues", + "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", + "source": "https://github.com/laminas/laminas-stdlib" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2024-10-29T13:46:07+00:00" }, { "name": "league/flysystem", "version": "1.1.10", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/league/flysystem/1.1.10/league-flysystem-1.1.10.zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-fileinfo": "*", @@ -3121,6 +4526,7 @@ "League\\Flysystem\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3150,25 +4556,46 @@ "sftp", "storage" ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], "time": "2022-10-04T09:16:37+00:00" }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/league/mime-type-detection/1.11.0/league-mime-type-detection-1.11.0.zip", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "shasum": "" + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -3176,6 +4603,7 @@ "League\\MimeTypeDetection\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3186,16 +4614,41 @@ } ], "description": "Mime-type detection for Flysystem", - "time": "2022-04-17T13:12:02+00:00" + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-01-28T23:22:08+00:00" }, { "name": "lmc/http-constants", "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/lmc-eu/http-constants.git", + "reference": "8cb0fbffdafdf0c0c42e05935fb09cc588633d48" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/lmc/http-constants/1.2.0/lmc-http-constants-1.2.0.zip", + "url": "https://api.github.com/repos/lmc-eu/http-constants/zipball/8cb0fbffdafdf0c0c42e05935fb09cc588633d48", "reference": "8cb0fbffdafdf0c0c42e05935fb09cc588633d48", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -3212,6 +4665,7 @@ "Lmc\\HttpConstants\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3222,16 +4676,31 @@ "request", "response" ], + "support": { + "issues": "https://github.com/lmc-eu/http-constants/issues", + "source": "https://github.com/lmc-eu/http-constants/tree/main" + }, "time": "2020-09-01T11:14:36+00:00" }, { "name": "monolog/monolog", "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "4192345e260f1d51b365536199744b987e160edc" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/monolog/monolog/2.5.0/monolog-monolog-2.5.0.zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4192345e260f1d51b365536199744b987e160edc", "reference": "4192345e260f1d51b365536199744b987e160edc", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2", @@ -3284,6 +4753,7 @@ "Monolog\\": "src/Monolog" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3301,16 +4771,41 @@ "logging", "psr-3" ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.5.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], "time": "2022-04-08T15:43:54+00:00" }, { "name": "myclabs/php-enum", "version": "1.8.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/php-enum.git", + "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/myclabs/php-enum/1.8.4/myclabs-php-enum-1.8.4.zip", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -3330,6 +4825,7 @@ "stubs/Stringable.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3344,30 +4840,60 @@ "keywords": [ "enum" ], + "support": { + "issues": "https://github.com/myclabs/php-enum/issues", + "source": "https://github.com/myclabs/php-enum/tree/1.8.4" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", + "type": "tidelift" + } + ], "time": "2022-08-04T09:53:51+00:00" }, { "name": "nesbot/carbon", - "version": "2.66.0", + "version": "2.73.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/nesbot/carbon/2.66.0/nesbot-carbon-2.66.0.zip", - "reference": "496712849902241f04902033b0441b269effe001", - "shasum": "" + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", + "ondrejmirtes/better-reflection": "<6", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^0.12.99 || ^1.7.14", @@ -3380,10 +4906,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" @@ -3393,6 +4915,10 @@ "includes": [ "extension.neon" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" } }, "autoload": { @@ -3400,6 +4926,7 @@ "Carbon\\": "src/Carbon/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3421,16 +4948,46 @@ "datetime", "time" ], - "time": "2023-01-29T18:53:47+00:00" + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2025-01-08T20:10:23+00:00" }, { "name": "nette/php-generator", "version": "v3.6.9", + "source": { + "type": "git", + "url": "https://github.com/nette/php-generator.git", + "reference": "d31782f7bd2ae84ad06f863391ec3fb77ca4d0a6" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/nette/php-generator/v3.6.9/nette-php-generator-v3.6.9.zip", + "url": "https://api.github.com/repos/nette/php-generator/zipball/d31782f7bd2ae84ad06f863391ec3fb77ca4d0a6", "reference": "d31782f7bd2ae84ad06f863391ec3fb77ca4d0a6", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "nette/utils": "^3.1.2", @@ -3456,6 +5013,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause", "GPL-2.0-only", @@ -3479,19 +5037,34 @@ "php", "scaffolding" ], + "support": { + "issues": "https://github.com/nette/php-generator/issues", + "source": "https://github.com/nette/php-generator/tree/v3.6.9" + }, "time": "2022-10-04T11:49:47+00:00" }, { "name": "nette/utils", - "version": "v3.2.9", + "version": "v3.2.10", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "a4175c62652f2300c8017fb7e640f9ccb11648d2" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/nette/utils/v3.2.9/nette-utils-v3.2.9.zip", - "reference": "c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c", - "shasum": "" + "url": "https://api.github.com/repos/nette/utils/zipball/a4175c62652f2300c8017fb7e640f9ccb11648d2", + "reference": "a4175c62652f2300c8017fb7e640f9ccb11648d2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.2 <8.3" + "php": ">=7.2 <8.4" }, "conflict": { "nette/di": "<3.0.6" @@ -3522,6 +5095,7 @@ "src/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause", "GPL-2.0-only", @@ -3555,16 +5129,31 @@ "utility", "validation" ], - "time": "2023-01-18T03:26:20+00:00" + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.10" + }, + "time": "2023-07-30T15:38:18+00:00" }, { "name": "nikic/fast-route", "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/nikic/fast-route/v1.3.0/nikic-fast-route-v1.3.0.zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", "reference": "181d480e08d9476e61381e04a71b34dc0432e812", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.4.0" @@ -3581,6 +5170,7 @@ "FastRoute\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3595,24 +5185,39 @@ "router", "routing" ], + "support": { + "issues": "https://github.com/nikic/FastRoute/issues", + "source": "https://github.com/nikic/FastRoute/tree/master" + }, "time": "2018-02-13T20:26:39+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.19.4", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/nikic/php-parser/v4.15.4/nikic-php-parser-v4.15.4.zip", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "shasum": "" + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -3628,6 +5233,7 @@ "PhpParser\\": "lib/PhpParser" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -3641,23 +5247,40 @@ "parser", "php" ], - "time": "2023-03-05T19:49:14+00:00" + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" + }, + "time": "2024-09-29T15:01:53+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v2.6.3", + "version": "v3.1.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/paragonie/constant_time_encoding/v2.6.3/paragonie-constant_time_encoding-v2.6.3.zip", - "reference": "58c3f47f650c94ec05a151692652a868995d2938", - "shasum": "" + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": "^7|^8" + "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^6|^7|^8|^9", - "vimeo/psalm": "^1|^2|^3|^4" + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, "type": "library", "autoload": { @@ -3665,6 +5288,7 @@ "ParagonIE\\ConstantTime\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3697,16 +5321,32 @@ "hex2bin", "rfc4648" ], - "time": "2022-06-14T06:56:20+00:00" + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2025-09-24T15:06:41+00:00" }, { "name": "paragonie/random_compat", "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/paragonie/random_compat/v9.99.100/paragonie-random_compat-v9.99.100.zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">= 7" @@ -3719,6 +5359,7 @@ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3736,16 +5377,32 @@ "pseudorandom", "random" ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, "time": "2020-10-15T08:29:30+00:00" }, { "name": "php-amqplib/php-amqplib", "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/php-amqplib/php-amqplib.git", + "reference": "5c537cb724f2e181183c202e63f4303935344c5f" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/php-amqplib/php-amqplib/v3.4.0/php-amqplib-php-amqplib-v3.4.0.zip", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/5c537cb724f2e181183c202e63f4303935344c5f", "reference": "5c537cb724f2e181183c202e63f4303935344c5f", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-mbstring": "*", @@ -3776,6 +5433,7 @@ "PhpAmqpLib\\": "PhpAmqpLib/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-2.1-or-later" ], @@ -3807,16 +5465,31 @@ "queue", "rabbitmq" ], + "support": { + "issues": "https://github.com/php-amqplib/php-amqplib/issues", + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.4.0" + }, "time": "2022-10-18T20:52:02+00:00" }, { "name": "php-di/phpdoc-reader", "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/PhpDocReader.git", + "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/php-di/phpdoc-reader/2.2.1/php-di-phpdoc-reader-2.2.1.zip", + "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c", "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0" @@ -3831,6 +5504,7 @@ "PhpDocReader\\": "src/PhpDocReader" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3839,29 +5513,44 @@ "phpdoc", "reflection" ], + "support": { + "issues": "https://github.com/PHP-DI/PhpDocReader/issues", + "source": "https://github.com/PHP-DI/PhpDocReader/tree/2.2.1" + }, "time": "2020-10-12T12:39:22+00:00" }, { "name": "phpoption/phpoption", - "version": "1.9.1", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/phpoption/phpoption/1.9.1/phpoption-phpoption-1.9.1.zip", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", - "shasum": "" + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" }, "type": "library", "extra": { "bamarni-bin": { "bin-links": true, - "forward-command": true + "forward-command": false }, "branch-alias": { "dev-master": "1.9-dev" @@ -3872,6 +5561,7 @@ "PhpOption\\": "src/PhpOption/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -3894,19 +5584,44 @@ "php", "type" ], - "time": "2023-02-25T19:38:58+00:00" + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:41:07+00:00" }, { "name": "phpseclib/phpseclib", - "version": "3.0.19", + "version": "3.0.43", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "709ec107af3cb2f385b9617be72af8cf62441d02" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/phpseclib/phpseclib/3.0.19/phpseclib-phpseclib-3.0.19.zip", - "reference": "cc181005cf548bfd8a4896383bb825d859259f95", - "shasum": "" + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/709ec107af3cb2f385b9617be72af8cf62441d02", + "reference": "709ec107af3cb2f385b9617be72af8cf62441d02", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "paragonie/constant_time_encoding": "^1|^2", + "paragonie/constant_time_encoding": "^1|^2|^3", "paragonie/random_compat": "^1.4|^2.0|^9.99.99", "php": ">=5.6.1" }, @@ -3929,6 +5644,7 @@ "phpseclib3\\": "phpseclib/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3980,16 +5696,45 @@ "x.509", "x509" ], - "time": "2023-03-05T17:13:09+00:00" + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.43" + }, + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2024-12-14T21:12:59+00:00" }, { "name": "promphp/prometheus_client_php", "version": "v2.2.2", + "source": { + "type": "git", + "url": "https://github.com/PromPHP/prometheus_client_php.git", + "reference": "5d27b6d84900d9b3208b5b6bf88d10ed0dc7a154" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/promphp/prometheus_client_php/v2.2.2/promphp-prometheus_client_php-v2.2.2.zip", + "url": "https://api.github.com/repos/PromPHP/prometheus_client_php/zipball/5d27b6d84900d9b3208b5b6bf88d10ed0dc7a154", "reference": "5d27b6d84900d9b3208b5b6bf88d10ed0dc7a154", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -4026,6 +5771,7 @@ "Prometheus\\": "src/Prometheus/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -4036,19 +5782,34 @@ } ], "description": "Prometheus instrumentation library for PHP applications.", + "support": { + "issues": "https://github.com/PromPHP/prometheus_client_php/issues", + "source": "https://github.com/PromPHP/prometheus_client_php/tree/v2.2.2" + }, "time": "2021-03-05T08:54:14+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/cache/1.0.1/psr-cache-1.0.1.zip", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -4061,13 +5822,14 @@ "Psr\\Cache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -4076,16 +5838,84 @@ "psr", "psr-6" ], - "time": "2016-08-06T20:24:11+00:00" + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/container/2.0.2/psr-container-2.0.2.zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.4.0" @@ -4101,6 +5931,7 @@ "Psr\\Container\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4119,16 +5950,31 @@ "container-interop", "psr" ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/event-dispatcher", "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/event-dispatcher/1.0.0/psr-event-dispatcher-1.0.0.zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0" @@ -4144,6 +5990,7 @@ "Psr\\EventDispatcher\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4159,20 +6006,35 @@ "psr", "psr-14" ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, "time": "2019-01-08T18:20:26+00:00" }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/http-client/1.0.1/psr-http-client-1.0.1.zip", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -4185,13 +6047,14 @@ "Psr\\Http\\Client\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -4202,20 +6065,34 @@ "psr", "psr-18" ], - "time": "2020-06-29T06:28:15+00:00" + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/http-factory/1.0.1/psr-http-factory-1.0.1.zip", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -4228,13 +6105,14 @@ "Psr\\Http\\Message\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -4248,16 +6126,30 @@ "request", "response" ], - "time": "2019-04-30T12:38:16+00:00" + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", "version": "1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/http-message/1.1/psr-http-message-1.1.zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -4273,6 +6165,7 @@ "Psr\\Http\\Message\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4292,20 +6185,34 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/1.1" + }, "time": "2023-04-04T09:50:52+00:00" }, { "name": "psr/http-server-handler", - "version": "1.0.1", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/http-server-handler/1.0.1/psr-http-server-handler-1.0.1.zip", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "shasum": "" + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -4318,13 +6225,14 @@ "Psr\\Http\\Server\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP server-side request handler", @@ -4339,20 +6247,34 @@ "response", "server" ], - "time": "2018-10-30T16:46:14+00:00" + "support": { + "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2" + }, + "time": "2023-04-10T20:06:20+00:00" }, { "name": "psr/http-server-middleware", - "version": "1.0.1", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/http-server-middleware/1.0.1/psr-http-server-middleware-1.0.1.zip", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "shasum": "" + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.0 || ^2.0", "psr/http-server-handler": "^1.0" }, "type": "library", @@ -4366,13 +6288,14 @@ "Psr\\Http\\Server\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP server-side middleware", @@ -4386,31 +6309,47 @@ "request", "response" ], - "time": "2018-10-30T17:12:04+00:00" + "support": { + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2" + }, + "time": "2023-04-11T06:14:47+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/log/1.1.4/psr-log-1.1.4.zip", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" + "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4427,16 +6366,30 @@ "psr", "psr-3" ], - "time": "2021-05-03T11:20:27+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/2.0.0" + }, + "time": "2021-07-14T16:41:46+00:00" }, { "name": "psr/simple-cache", "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/simple-cache/1.0.1/psr-simple-cache-1.0.1.zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.3.0" @@ -4452,6 +6405,7 @@ "Psr\\SimpleCache\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4469,16 +6423,30 @@ "psr-16", "simple-cache" ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, "time": "2017-10-23T01:57:42+00:00" }, { "name": "ralouphie/getallheaders", "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/ralouphie/getallheaders/3.0.3/ralouphie-getallheaders-3.0.3.zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.6" @@ -4493,6 +6461,7 @@ "src/getallheaders.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4503,22 +6472,38 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { "name": "react/promise", - "version": "v2.9.0", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/react/promise/v2.9.0/react-promise-v2.9.0.zip", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "shasum": "" + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=5.4.0" + "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", "autoload": { @@ -4529,6 +6514,7 @@ "React\\Promise\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4559,23 +6545,44 @@ "promise", "promises" ], - "time": "2022-02-11T10:27:51+00:00" + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" }, { "name": "roave/dont", - "version": "1.1.0", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/Roave/Dont.git", + "reference": "e40b8fbeb9c0b076eedd54dae2e1b27bfad74930" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/roave/dont/1.1.0/roave-dont-1.1.0.zip", - "reference": "a74fd73b22eb17afea40eadbdc3fd1074fb7d2ba", - "shasum": "" + "url": "https://api.github.com/repos/Roave/Dont/zipball/e40b8fbeb9c0b076eedd54dae2e1b27bfad74930", + "reference": "e40b8fbeb9c0b076eedd54dae2e1b27bfad74930", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": "^7.1" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "require-dev": { - "infection/infection": "^0.12.0", - "phpunit/phpunit": "^7.5 || ^8.0" + "infection/infection": "^0.26.16", + "phpunit/phpunit": "^9.5.26" }, "type": "library", "autoload": { @@ -4583,6 +6590,7 @@ "Dont\\": "src/Dont" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4599,22 +6607,37 @@ "defensive programming", "strictness" ], - "time": "2019-04-16T10:22:01+00:00" + "support": { + "issues": "https://github.com/Roave/Dont/issues", + "source": "https://github.com/Roave/Dont/tree/1.6.0" + }, + "time": "2022-12-06T14:04:48+00:00" }, { "name": "seld/jsonlint", - "version": "1.9.0", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/seld/jsonlint/1.9.0/seld-jsonlint-1.9.0.zip", - "reference": "4211420d25eba80712bff236a98960ef68b866b7", - "shasum": "" + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/1748aaf847fc731cfad7725aec413ee46f0cc3a2", + "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.5", + "phpstan/phpstan": "^1.11", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" }, "bin": [ @@ -4626,6 +6649,7 @@ "Seld\\JsonLint\\": "src/Seld/JsonLint/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4633,7 +6657,7 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "JSON Linter", @@ -4643,16 +6667,41 @@ "parser", "validator" ], - "time": "2022-04-01T13:37:23+00:00" + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.11.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2024-07-11T14:55:45+00:00" }, { "name": "seld/phar-utils", "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/seld/phar-utils/1.2.1/seld-phar-utils-1.2.1.zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.3" @@ -4668,6 +6717,7 @@ "Seld\\PharUtils\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4681,16 +6731,31 @@ "keywords": [ "phar" ], + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" + }, "time": "2022-08-31T10:31:18+00:00" }, { "name": "seld/signal-handler", - "version": "2.0.1", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/signal-handler.git", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/seld/signal-handler/2.0.1/seld-signal-handler-2.0.1.zip", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75", - "shasum": "" + "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.0" @@ -4714,6 +6779,7 @@ "Seld\\Signal\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4732,15 +6798,24 @@ "sigterm", "unix" ], - "time": "2022-07-20T18:31:45+00:00" + "support": { + "issues": "https://github.com/Seldaek/signal-handler/issues", + "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2" + }, + "time": "2023-09-03T09:24:00+00:00" }, { "name": "singularity/hdk-core", - "version": "0.1.6", + "version": "0.1.10", "source": { "type": "git", - "url": "http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore.git", - "reference": "def9f0469db606cb6a29ee85162011079a340dd4" + "url": "https://nest.doylee.cn/HDK/hdk-core", + "reference": "0.1.10" + }, + "dist": { + "type": "zip", + "url": "https://nest.doylee.cn/api/packages/HDK/composer/files/singularity%2Fhdk-core/0.1.10/singularity-hdk-core.0.1.10.zip", + "shasum": "e20e1d4ce08c3ca84271c5e6f753d51b798203ce" }, "require": { "composer/composer": ">=2.0", @@ -4770,6 +6845,7 @@ "firebase/php-jwt": "^6.3", "friendsofphp/php-cs-fixer": "^3.13", "guzzlehttp/guzzle": "^7.5", + "hyperf/crontab": "<=3.0.9 || >3.0.13 <3.1", "hyperf/session": "^2.2", "hyperf/validation": "^2.2", "pestphp/pest": "^1.22", @@ -4807,24 +6883,6 @@ "Singularity\\HDK\\Test\\Core\\": "tests/" } }, - "scripts": { - "post-root-package-install": [], - "test": [ - "vendor/bin/pest $1" - ], - "cs-fix": [ - "vendor/bin/php-cs-fixer fix $1 --rules=@PSR12 --allow-risky=yes" - ], - "analyse": [ - "vendor/bin/phpstan analyse $1" - ], - "ci": [ - "@analyse publish/ src/ tests/", - "@cs-fix", - "@test --ci", - "echo CI Success" - ] - }, "license": [ "MIT" ], @@ -4835,16 +6893,27 @@ } ], "description": "Common Hyperf Development Kit", - "time": "2023-03-21T03:02:49+00:00" + "time": "2025-09-26T17:31:38+08:00" }, { "name": "symfony/console", "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "535846c7ee6bc4dd027ca0d93220601456734b10" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/console/v5.4.11/symfony-console-v5.4.11.zip", + "url": "https://api.github.com/repos/symfony/console/zipball/535846c7ee6bc4dd027ca0d93220601456734b10", "reference": "535846c7ee6bc4dd027ca0d93220601456734b10", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.5", @@ -4890,6 +6959,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4911,28 +6981,56 @@ "console", "terminal" ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2022-07-22T10:42:43+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/deprecation-contracts/v2.5.2/symfony-deprecation-contracts-v2.5.2.zip", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "shasum": "" + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -4940,6 +7038,7 @@ "function.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4955,22 +7054,52 @@ ], "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "time": "2022-01-02T09:53:40+00:00" + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.21", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/filesystem/v5.4.21/symfony-filesystem-v5.4.21.zip", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", - "shasum": "" + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.2.5", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4981,6 +7110,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -4996,16 +7126,44 @@ ], "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", - "time": "2023-02-14T08:03:56+00:00" + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/finder", - "version": "v5.4.21", + "version": "v5.4.45", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "63741784cd7b9967975eec610b256eed3ede022b" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/finder/v5.4.21/symfony-finder-v5.4.21.zip", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", - "shasum": "" + "url": "https://api.github.com/repos/symfony/finder/zipball/63741784cd7b9967975eec610b256eed3ede022b", + "reference": "63741784cd7b9967975eec610b256eed3ede022b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.2.5", @@ -5021,6 +7179,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5036,25 +7195,50 @@ ], "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "time": "2023-02-16T09:33:00+00:00" + "support": { + "source": "https://github.com/symfony/finder/tree/v5.4.45" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-28T13:32:08+00:00" }, { "name": "symfony/polyfill-apcu", - "version": "v1.27.0", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "dec55f5d339e084daaf839104726c022ddc3c593" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-apcu/v1.27.0/symfony-polyfill-apcu-v1.27.0.zip", - "reference": "6e7f6ed2168779a2b3927e606a9768860a8bdfa0", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/dec55f5d339e084daaf839104726c022ddc3c593", + "reference": "dec55f5d339e084daaf839104726c022ddc3c593", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5068,6 +7252,7 @@ "Symfony\\Polyfill\\Apcu\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5090,19 +7275,47 @@ "portable", "shim" ], - "time": "2022-11-03T14:55:06+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-apcu/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-ctype/v1.27.0/symfony-polyfill-ctype-v1.27.0.zip", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -5112,12 +7325,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5128,6 +7338,7 @@ "Symfony\\Polyfill\\Ctype\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5149,31 +7360,56 @@ "polyfill", "portable" ], - "time": "2022-11-03T14:55:06+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-intl-grapheme/v1.27.0/symfony-polyfill-intl-grapheme-v1.27.0.zip", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5184,6 +7420,7 @@ "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5207,33 +7444,57 @@ "portable", "shim" ], - "time": "2022-11-03T14:55:06+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-intl-idn/v1.27.0/symfony-polyfill-intl-idn-v1.27.0.zip", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5244,6 +7505,7 @@ "Symfony\\Polyfill\\Intl\\Idn\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5271,31 +7533,56 @@ "portable", "shim" ], - "time": "2022-11-03T14:55:06+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-10T14:38:51+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-intl-normalizer/v1.27.0/symfony-polyfill-intl-normalizer-v1.27.0.zip", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5309,6 +7596,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5332,19 +7620,48 @@ "portable", "shim" ], - "time": "2022-11-03T14:55:06+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-mbstring/v1.27.0/symfony-polyfill-mbstring-v1.27.0.zip", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "ext-iconv": "*", + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -5354,12 +7671,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5370,6 +7684,7 @@ "Symfony\\Polyfill\\Mbstring\\": "" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5392,81 +7707,53 @@ "portable", "shim" ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.27.0", - "dist": { - "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-php72/v1.27.0/symfony-polyfill-php72-v1.27.0.zip", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", - "shasum": "" + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } - }, - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-php73/v1.27.0/symfony-polyfill-php73-v1.27.0.zip", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5480,6 +7767,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5501,28 +7789,53 @@ "portable", "shim" ], - "time": "2022-11-03T14:55:06+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-php80/v1.27.0/symfony-polyfill-php80-v1.27.0.zip", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5536,6 +7849,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5561,28 +7875,53 @@ "portable", "shim" ], - "time": "2022-11-03T14:55:06+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-php81/v1.27.0/symfony-polyfill-php81-v1.27.0.zip", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", - "shasum": "" + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5596,6 +7935,7 @@ "Resources/stubs" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5617,20 +7957,47 @@ "portable", "shim" ], - "time": "2022-11-03T14:55:06+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v5.4.22", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/process/v5.4.22/symfony-process-v5.4.22.zip", - "reference": "4b850da0cc3a2a9181c1ed407adbca4733dc839b", - "shasum": "" + "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -5641,6 +8008,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5656,35 +8024,72 @@ ], "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "time": "2023-03-06T21:29:33+00:00" + "support": { + "source": "https://github.com/symfony/process/tree/v7.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-17T09:11:12+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.2", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/service-contracts/v1.1.2/symfony-service-contracts-v1.1.2.zip", - "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0", - "shasum": "" + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": "^7.1.3" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, - "suggest": { - "psr/container": "", - "symfony/service-implementation": "" + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "3.5-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5708,33 +8113,61 @@ "interoperability", "standards" ], - "time": "2019-05-28T07:50:59+00:00" + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v5.4.22", + "version": "v6.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "73e2c6966a5aef1d4892873ed5322245295370c6" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/string/v5.4.22/symfony-string-v5.4.22.zip", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", - "shasum": "" + "url": "https://api.github.com/repos/symfony/string/zipball/73e2c6966a5aef1d4892873ed5322245295370c6", + "reference": "73e2c6966a5aef1d4892873ed5322245295370c6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5748,6 +8181,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5771,52 +8205,78 @@ "utf-8", "utf8" ], - "time": "2023-03-14T06:11:53+00:00" + "support": { + "source": "https://github.com/symfony/string/tree/v6.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-18T15:23:29+00:00" }, { "name": "symfony/translation", - "version": "v5.4.22", + "version": "v6.4.23", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "de8afa521e04a5220e9e58a1dc99971ab7cac643" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/translation/v5.4.22/symfony-translation-v5.4.22.zip", - "reference": "9a401392f01bc385aa42760eff481d213a0cc2ba", - "shasum": "" + "url": "https://api.github.com/repos/symfony/translation/zipball/de8afa521e04a5220e9e58a1dc99971ab7cac643", + "reference": "de8afa521e04a5220e9e58a1dc99971ab7cac643", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<4.4", - "symfony/console": "<5.3", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { - "symfony/translation-implementation": "2.3" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5830,6 +8290,7 @@ "/Tests/" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5845,38 +8306,67 @@ ], "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", - "time": "2023-03-27T16:07:23+00:00" + "support": { + "source": "https://github.com/symfony/translation/tree/v6.4.23" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-26T21:24:02+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.2", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/translation-contracts/v2.5.2/symfony-translation-contracts-v2.5.2.zip", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", - "shasum": "" + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" + "php": ">=8.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5900,16 +8390,44 @@ "interoperability", "standards" ], - "time": "2022-06-27T16:58:25+00:00" + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" }, { "name": "teapot/status-code", "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/teapot-php/status-code.git", + "reference": "7aaba4364645ebb9d3a36267c9b3a32206d3042b" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/teapot/status-code/v1.1.2/teapot-status-code-v1.1.2.zip", + "url": "https://api.github.com/repos/teapot-php/status-code/zipball/7aaba4364645ebb9d3a36267c9b3a32206d3042b", "reference": "7aaba4364645ebb9d3a36267c9b3a32206d3042b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.4 || ^7.0 || ^8.0" @@ -5923,6 +8441,7 @@ "Teapot\\StatusCode\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -5937,30 +8456,45 @@ "keywords": [ "http" ], + "support": { + "issues": "https://github.com/teapot-php/status-code/issues", + "source": "https://github.com/teapot-php/status-code/tree/v1.1.2" + }, "time": "2020-11-03T17:14:32+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.5.0", + "version": "v5.6.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/vlucas/phpdotenv/v5.5.0/vlucas-phpdotenv-v5.5.0.zip", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "shasum": "" + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -5969,10 +8503,10 @@ "extra": { "bamarni-bin": { "bin-links": true, - "forward-command": true + "forward-command": false }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -5980,6 +8514,7 @@ "Dotenv\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -6001,16 +8536,41 @@ "env", "environment" ], - "time": "2022-10-16T01:01:54+00:00" + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:52:34+00:00" }, { "name": "xxtime/flysystem-aliyun-oss", "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/xxtime/flysystem-aliyun-oss.git", + "reference": "ae873b5919076157b9cfeaf39d2f56d2dbb39ee9" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/xxtime/flysystem-aliyun-oss/1.5.0/xxtime-flysystem-aliyun-oss-1.5.0.zip", + "url": "https://api.github.com/repos/xxtime/flysystem-aliyun-oss/zipball/ae873b5919076157b9cfeaf39d2f56d2dbb39ee9", "reference": "ae873b5919076157b9cfeaf39d2f56d2dbb39ee9", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "aliyuncs/oss-sdk-php": "~2.3", @@ -6023,6 +8583,7 @@ "Xxtime\\Flysystem\\Aliyun\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6041,16 +8602,33 @@ "aliyun-oss", "flysystem-aliyun-oss" ], + "support": { + "email": "joe@xxtime.com", + "issues": "https://github.com/xxtime/flysystem-aliyun-oss/issues", + "source": "https://github.com/xxtime/flysystem-aliyun-oss/tree/1.5.0", + "wiki": "https://github.com/xxtime" + }, "time": "2019-11-12T07:57:34+00:00" }, { "name": "yadakhov/insert-on-duplicate-key", "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/yadakhov/insert-on-duplicate-key.git", + "reference": "69da752259142490459035334f3750e37d6ce7fa" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/yadakhov/insert-on-duplicate-key/v1.3.0/yadakhov-insert-on-duplicate-key-v1.3.0.zip", + "url": "https://api.github.com/repos/yadakhov/insert-on-duplicate-key/zipball/69da752259142490459035334f3750e37d6ce7fa", "reference": "69da752259142490459035334f3750e37d6ce7fa", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require-dev": { "illuminate/database": "^8.35", @@ -6062,6 +8640,7 @@ "Yadakhov\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -6079,16 +8658,31 @@ "eloquent", "mysql" ], + "support": { + "issues": "https://github.com/yadakhov/insert-on-duplicate-key/issues", + "source": "https://github.com/yadakhov/insert-on-duplicate-key/tree/v1.3.0" + }, "time": "2021-04-01T19:13:35+00:00" }, { "name": "zoujingli/ip2region", "version": "v1.0.13", + "source": { + "type": "git", + "url": "https://github.com/zoujingli/ip2region.git", + "reference": "c02c74571ad665745e57db5d04efa165e543fade" + }, "dist": { "type": "zip", - "url": "https://mirrors.cloud.tencent.com/repository/composer/zoujingli/ip2region/v1.0.13/zoujingli-ip2region-v1.0.13.zip", + "url": "https://api.github.com/repos/zoujingli/ip2region/zipball/c02c74571ad665745e57db5d04efa165e543fade", "reference": "c02c74571ad665745e57db5d04efa165e543fade", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=5.3" @@ -6099,6 +8693,7 @@ "Ip2Region.php" ] }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -6114,21 +8709,155 @@ "keywords": [ "Ip2Region" ], + "support": { + "issues": "https://github.com/zoujingli/ip2region/issues", + "source": "https://github.com/zoujingli/ip2region/tree/v1.0.13" + }, "time": "2023-03-13T05:18:05+00:00" } ], - "packages-dev": [], + "packages-dev": [ + { + "name": "phpstan/phpstan", + "version": "2.1.12", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "96dde49e967c0c22812bcfa7bda4ff82c09f3b0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/96dde49e967c0c22812bcfa7bda4ff82c09f3b0c", + "reference": "96dde49e967c0c22812bcfa7bda4ff82c09f3b0c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2025-04-16T13:19:18+00:00" + }, + { + "name": "rector/rector", + "version": "2.0.11", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "059b827cc648929711606e9824337e41e2f9ed92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/059b827cc648929711606e9824337e41e2f9ed92", + "reference": "059b827cc648929711606e9824337e41e2f9ed92", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.1.9" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "suggest": { + "ext-dom": "To manipulate phpunit.xml via the custom-rule command" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/2.0.11" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2025-03-28T10:25:17+00:00" + } + ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.4", + "php": ">=8.2", "ext-json": "*", "ext-pdo": "*", "ext-swoole": ">=4.4" }, - "platform-dev": [], - "plugin-api-version": "2.3.0" + "platform-dev": {}, + "plugin-api-version": "2.6.0" } diff --git a/rector.php b/rector.php new file mode 100644 index 0000000..2d0982c --- /dev/null +++ b/rector.php @@ -0,0 +1,30 @@ +paths([ + __DIR__ . '/src', // 替换为你项目代码的路径,例如:/app, /backend 等 + // __DIR__ . '/tests', // 如果你想升级测试代码,也加入 + ]); + + // 2. 一次性应用所有规则到 PHP 8.2 (推荐用于大型升级) + $rectorConfig->sets([ + // 这将包含从 7.4 到 8.1 的所有升级规则,以及 8.2 的所有新规则 + LevelSetList::UP_TO_PHP_82, + // 建议同时加入一些代码质量改进的规则 + SetList::DEAD_CODE, // 移除无用代码 + ]); + + // 可选:跳过某些文件或规则 + // $rectorConfig->skip([ + // // 例如:跳过特定文件 + // // __DIR__ . '/src/Legacy/old_file.php', + // ]); +}; \ No newline at end of file diff --git a/scripts/docker-env.sh b/scripts/docker-env.sh index 9ef8fd5..89cfe32 100755 --- a/scripts/docker-env.sh +++ b/scripts/docker-env.sh @@ -7,4 +7,4 @@ docker run \ -v "$(pwd)":/srv/www \ -v ~/.ssh:/root/.ssh \ -v ~/.gitconfig:/root/.gitconfig \ - harbor.luxcreo.cn/library/hyperf:7.4-swoole /bin/ash + harbor.luxcreo.cn/library/hyperf:8.2-swoole /bin/ash diff --git a/src/admin/src/Controller/AdminAbstractController.php b/src/admin/src/Controller/AdminAbstractController.php index e613a19..d8967ac 100755 --- a/src/admin/src/Controller/AdminAbstractController.php +++ b/src/admin/src/Controller/AdminAbstractController.php @@ -36,7 +36,7 @@ abstract class AdminAbstractController extends AbstractController public function getRecordHistory() { $history_versions = $this->getEntity()->lastVersion($this->previous_version_number); - $history_versions = array_node_append($history_versions, 'user_id', 'username', function ($uids) { + return array_node_append($history_versions, 'user_id', 'username', function ($uids) { $ret = User::query()->select(['id', 'username'])->whereIn('id', $uids)->get(); if (!$ret) { return []; @@ -49,14 +49,11 @@ abstract class AdminAbstractController extends AbstractController } return $ret; }); - return $history_versions; } /** * 新版本检查 * - * @param int $id - * @param int $last_ver_id * * @return array */ diff --git a/src/admin/src/Controller/LogController.php b/src/admin/src/Controller/LogController.php index ab2283a..e2eca3e 100755 --- a/src/admin/src/Controller/LogController.php +++ b/src/admin/src/Controller/LogController.php @@ -94,7 +94,7 @@ class LogController extends AdminAbstractController 'width' => '480px', 'render' => function ($field, $row) { if (!is_array($row['detail_json'])) { - $row['detail_json'] = json_decode($row['detail_json'], true); + $row['detail_json'] = json_decode((string) $row['detail_json'], true); } return $row['detail_json']['description'] ?? ''; @@ -112,7 +112,7 @@ class LogController extends AdminAbstractController 'width' => '200px', 'render' => function ($field, $row) { if (!is_array($row['detail_json'])) { - $row['detail_json'] = json_decode($row['detail_json'], true); + $row['detail_json'] = json_decode((string) $row['detail_json'], true); } return $row['detail_json']['remark'] ?? ''; diff --git a/src/admin/src/Controller/MenuController.php b/src/admin/src/Controller/MenuController.php index c5e3291..a7ec17b 100755 --- a/src/admin/src/Controller/MenuController.php +++ b/src/admin/src/Controller/MenuController.php @@ -252,13 +252,11 @@ class MenuController extends AdminAbstractController 'tabs' => function() { $conf = \HyperfAdmin\Admin\Service\CommonConfig::getValByName('website_config'); $system_module = $conf['system_module'] ?? []; - return array_map(function ($item) { - return [ - 'label' => $item['label'], - 'value' => $item['name'], - 'icon' => $item['icon'] - ]; - }, $system_module); + return array_map(fn($item) => [ + 'label' => $item['label'], + 'value' => $item['name'], + 'icon' => $item['icon'] + ], $system_module); }, 'rowActions' => [ [ @@ -382,9 +380,9 @@ class MenuController extends AdminAbstractController } return $item; - }, array_filter(explode(',', $record['permission']))); + }, array_filter(explode(',', (string) $record['permission']))); } - $scaffold_action = json_decode($record['scaffold_action'], true); + $scaffold_action = json_decode((string) $record['scaffold_action'], true); $record['scaffold_action'] = $scaffold_action ? array_keys($scaffold_action) : []; $record['pid'] = (new Menu())->getPathNodeIds($id); } @@ -395,7 +393,7 @@ class MenuController extends AdminAbstractController if ($data['path'] == '#' || $data['path'] == '') { $this->exception('菜单路由地址不能为空或"#"', ErrorCode::CODE_ERR_PARAM); } - $paths = array_filter(explode('/', $data['path'])); + $paths = array_filter(explode('/', (string) $data['path'])); if (count($paths) > 5) { $this->exception('路由地址层级过深>5,请设置精简一些', ErrorCode::CODE_ERR_PARAM); } @@ -423,14 +421,14 @@ class MenuController extends AdminAbstractController protected function afterSave($pk_val, $data, $entity) { // 更新预置的脚手架权限 - $scaffold_action = json_decode($entity->scaffold_action, true); + $scaffold_action = json_decode((string) $entity->scaffold_action, true); $action_keys = $scaffold_action ? array_keys($scaffold_action) : []; $need_del_ids = $scaffold_action ? array_values($scaffold_action) : []; $router_ids = []; if (!empty($data['scaffold_action'])) { $need_del_ids = collect($scaffold_action)->except($data['scaffold_action'])->values()->toArray(); $scaffold_action = collect($scaffold_action)->only($data['scaffold_action'])->toArray(); - $paths = array_filter(explode('/', $data['path'])); + $paths = array_filter(explode('/', (string) $data['path'])); array_pop($paths); $prefix = implode('/', $paths); foreach ($data['scaffold_action'] as $k => $action) { @@ -530,7 +528,7 @@ class MenuController extends AdminAbstractController $route_list = $routes; } foreach ($route_list as $route => $v) { - $route = is_string($route) ? rtrim($route) : rtrim($v[0]->route); + $route = is_string($route) ? rtrim($route) : rtrim((string) $v[0]->route); $route_key = "$http_method::{$route}"; if (in_array($route_key, $conf)) { continue; @@ -555,7 +553,7 @@ class MenuController extends AdminAbstractController } $right_options = []; foreach ($conf as $route) { - [$http_method, $uri] = explode("::", $route, 2); + [$http_method, $uri] = explode("::", (string) $route, 2); $dispatcher = container(DispatcherFactory::class)->getDispatcher('http'); $route_info = $dispatcher->dispatch($http_method, $uri); if (!empty($route_info[1]->callback[0])) { diff --git a/src/admin/src/Controller/RoleController.php b/src/admin/src/Controller/RoleController.php index 6d63802..ee2dcec 100755 --- a/src/admin/src/Controller/RoleController.php +++ b/src/admin/src/Controller/RoleController.php @@ -132,7 +132,7 @@ class RoleController extends AdminAbstractController protected function afterSave($pk_val, $data) { - $data['permissions'] = json_decode($data['permissions'], true); + $data['permissions'] = json_decode((string) $data['permissions'], true); if (empty($data['permissions'])) { return true; } diff --git a/src/admin/src/Controller/SystemController.php b/src/admin/src/Controller/SystemController.php index 8b8a9b5..9d1179e 100755 --- a/src/admin/src/Controller/SystemController.php +++ b/src/admin/src/Controller/SystemController.php @@ -29,9 +29,7 @@ class SystemController extends AdminAbstractController if (isset($config['system_module']) && !$this->auth_service->isSupperAdmin()) { $user_id = $this->auth_service->get('id'); $modules = $this->permission_service->getModules($user_id); - $config['system_module'] = array_filter($config['system_module'], function ($item) use ($modules) { - return in_array($item['name'], $modules); - }); + $config['system_module'] = array_filter($config['system_module'], fn($item) => in_array($item['name'], $modules)); } return $this->success($config); @@ -46,9 +44,7 @@ class SystemController extends AdminAbstractController $kw = $this->request->input('kw', ''); $routes = $this->permission_service->getSystemRouteOptions(); - $routes = array_filter($routes, function ($item) use ($kw) { - return Str::contains($item['value'], $kw); - }); + $routes = array_filter($routes, fn($item) => Str::contains($item['value'], $kw)); return $this->success(array_values($routes)); } diff --git a/src/admin/src/Controller/UserController.php b/src/admin/src/Controller/UserController.php index cc5fa15..ff11c8e 100755 --- a/src/admin/src/Controller/UserController.php +++ b/src/admin/src/Controller/UserController.php @@ -90,9 +90,7 @@ class UserController extends AdminAbstractController 'type' => 'date_range', ], ], - 'hasOne' => function ($field, $row) { - return 'hyperf_admin.'.env('HYPERF_ADMIN_DB_NAME').'.user_role:user_id,role_id'; - }, + 'hasOne' => fn($field, $row) => 'hyperf_admin.'.env('HYPERF_ADMIN_DB_NAME').'.user_role:user_id,role_id', 'table' => [ 'columns' => [ 'id', @@ -100,9 +98,7 @@ class UserController extends AdminAbstractController 'username', [ 'field' => 'mobile', - 'render' => function ($field, $row) { - return data_desensitization($field, 3, 4); - }, + 'render' => fn($field, $row) => data_desensitization($field, 3, 4), ], ['field' => 'avatar', 'render' => 'avatarRender'], 'email', @@ -235,12 +231,12 @@ class UserController extends AdminAbstractController public function passwordHash($password) { - return sha1(md5($password) . md5(config('password.salt'))); + return sha1(md5((string) $password) . md5((string) config('password.salt'))); } public function logout() { - $user = $this->auth_service->logout(); + $this->auth_service->logout(); return $this->success(); } @@ -259,9 +255,7 @@ class UserController extends AdminAbstractController $task = new ExportTasks(); $task->name = $this->request->input('name'); $task->list_api = $url; - $task->filters = array_filter($this->request->input('filters'), function ($item) { - return $item !== ''; - }); + $task->filters = array_filter($this->request->input('filters'), fn($item) => $item !== ''); $task->operator_id = $this->userId() ?? 0; if ((new ExportService())->getFirstSameTask($task->list_api, $task->filters, $task->operator_id)) { // 如果当天已经有相同过滤条件且还未成功生成文件的任务 return $this->success([], '已经有相同的任务,请勿重复导出'); diff --git a/src/admin/src/Install/InstallCommand.php b/src/admin/src/Install/InstallCommand.php index 0304a19..c76fcf6 100755 --- a/src/admin/src/Install/InstallCommand.php +++ b/src/admin/src/Install/InstallCommand.php @@ -22,7 +22,7 @@ class InstallCommand extends HyperfCommand $sql = file_get_contents(__DIR__ . '/install.sql'); - $re = Db::connection('hyperf_admin')->getPdo()->exec($sql); + Db::connection('hyperf_admin')->getPdo()->exec($sql); $this->output->success('hyperf-admin db install success'); } diff --git a/src/admin/src/Install/UpdateCommand.php b/src/admin/src/Install/UpdateCommand.php index bddd15a..a6905a9 100755 --- a/src/admin/src/Install/UpdateCommand.php +++ b/src/admin/src/Install/UpdateCommand.php @@ -36,7 +36,7 @@ class UpdateCommand extends HyperfCommand $sql = file_get_contents($update_sql_file); - $re = Db::connection('hyperf_admin')->getPdo()->exec($sql); + Db::connection('hyperf_admin')->getPdo()->exec($sql); $this->output->success('hyperf-admin db update success'); diff --git a/src/admin/src/Middleware/PermissionMiddleware.php b/src/admin/src/Middleware/PermissionMiddleware.php index bfe99c8..d8c3de1 100755 --- a/src/admin/src/Middleware/PermissionMiddleware.php +++ b/src/admin/src/Middleware/PermissionMiddleware.php @@ -116,8 +116,6 @@ class PermissionMiddleware extends CoreMiddleware } /** - * @param int $code - * @param string|null $message * * @return \Psr\Http\Message\ResponseInterface */ @@ -152,7 +150,7 @@ class PermissionMiddleware extends CoreMiddleware } else { $body = ''; } - $ak = str_replace('ha ', '', explode(':', $client_token)[0] ?? ''); + $ak = str_replace('ha ', '', explode(':', (string) $client_token)[0] ?? ''); $sk = config('client_user')[$ak] ?? ''; $auth = new AKSK($ak, $sk); $token = $auth->token($method, $path, $host, $query, $content_type, $body); diff --git a/src/admin/src/Model/GlobalConfig.php b/src/admin/src/Model/GlobalConfig.php index 278cbef..d0a98cf 100755 --- a/src/admin/src/Model/GlobalConfig.php +++ b/src/admin/src/Model/GlobalConfig.php @@ -57,7 +57,7 @@ class GlobalConfig extends BaseModel if(empty($item)) { return $default; } - $config = json_decode($item[0]['value'], true); + $config = json_decode((string) $item[0]['value'], true); if(is_null($config)) { return $default; } @@ -76,8 +76,8 @@ class GlobalConfig extends BaseModel public static function setConfig($name, $value, $ext = [], $raw = true) { $namespace = ''; - if(($pos = strpos($name, '.')) !== false) { - $namespace = substr($name, 0, $pos); + if(($pos = strpos((string) $name, '.')) !== false) { + $namespace = substr((string) $name, 0, $pos); } if($raw) { $value = json_encode($value); diff --git a/src/admin/src/Model/User.php b/src/admin/src/Model/User.php index 7b16b21..8c536bb 100755 --- a/src/admin/src/Model/User.php +++ b/src/admin/src/Model/User.php @@ -70,7 +70,7 @@ class User extends BaseModel public function getRolesAttribute($value) { - return explode(',', $value); + return explode(',', (string) $value); } public function setRolesAttribute($value) diff --git a/src/admin/src/Model/Versionable.php b/src/admin/src/Model/Versionable.php index 71050b1..166a678 100755 --- a/src/admin/src/Model/Versionable.php +++ b/src/admin/src/Model/Versionable.php @@ -53,7 +53,7 @@ trait Versionable public function getMorphClass() { - if (strpos($this->getTable(), '.') !== false) { + if (str_contains($this->getTable(), '.')) { return $this->getTable(); } return $this->getConnectionName() . '.' . $this->getTable(); @@ -89,8 +89,6 @@ trait Versionable /** * 监听saved事件保存表更数据 - * - * @param Saved $event */ public function saved(Saved $event) { @@ -119,8 +117,6 @@ trait Versionable /** * 记录数据版本前先记录请求 - * - * @return RequestLog */ private function processRequest(): RequestLog { @@ -152,7 +148,7 @@ trait Versionable { $keep = $this->keep_version_count ?? 100; $count = $this->versions()->count(); - if ($keep > 0 && $count > $keep) { + if ($count > $keep) { $this->versions()->limit($count - $keep)->delete(); } } @@ -170,7 +166,6 @@ trait Versionable /** * 前几个版本 * - * @param int $previous * * @return mixed */ diff --git a/src/admin/src/Service/ExportService.php b/src/admin/src/Service/ExportService.php index 6d25137..8ed1ef0 100755 --- a/src/admin/src/Service/ExportService.php +++ b/src/admin/src/Service/ExportService.php @@ -80,7 +80,7 @@ class ExportService } $task->fill(['status' => ExportTasks::STATUS_PROCESSING])->save(); $list_api = 'http://127.0.0.1:' . config('server.servers.0.port') . $task->list_api; - $query['_page'] = ($query['_page'] ?? 1); + $query['_page'] ??= 1; $size = 100; $query['_size'] = $size; $query = array_merge($query, $task->filters); @@ -95,9 +95,7 @@ class ExportService $info_api = 'http://127.0.0.1:' . config('server.servers.0.port') . '/' . $subject . '/info'; } $info = Guzzle::get($info_api, [], $headers); - $table_headers = array_filter($info['payload']['tableHeader'], function ($item) { - return $item['hidden'] ?? true; - }); + $table_headers = array_filter($info['payload']['tableHeader'], fn($item) => $item['hidden'] ?? true); $table_headers_str = []; foreach($table_headers as $item) { $table_headers_str[] = $item['title']; @@ -166,9 +164,8 @@ class ExportService } $arr = array_map(function ($item) { $item = csv_big_num($item); - $item = preg_replace('/\\n/', ' ', $item); - return $item; + return preg_replace('/\\n/', ' ', (string) $item); }, $arr); return implode(',', array_map(function ($item) { diff --git a/src/admin/src/Service/GlobalConfig.php b/src/admin/src/Service/GlobalConfig.php index aa58ef3..e59833b 100755 --- a/src/admin/src/Service/GlobalConfig.php +++ b/src/admin/src/Service/GlobalConfig.php @@ -9,8 +9,8 @@ class GlobalConfig public static function setConfig($name, $value, $ext = [], $raw = true) { $namespace = ''; - if(($pos = strpos($name, '.')) !== false) { - $namespace = substr($name, 0, $pos); + if(($pos = strpos((string) $name, '.')) !== false) { + $namespace = substr((string) $name, 0, $pos); } if($raw) { $value = json_encode($value); diff --git a/src/admin/src/Service/Menu.php b/src/admin/src/Service/Menu.php index 3526c33..c549a55 100755 --- a/src/admin/src/Service/Menu.php +++ b/src/admin/src/Service/Menu.php @@ -14,11 +14,7 @@ class Menu { $query = $this->query(); if (!empty($menu_ids)) { - $query->where(function ($query) use ($menu_ids) { - return $query->whereIn('id', $menu_ids)->orWhere(function ($query) use ($menu_ids) { - return $query->where('is_menu', 0)->whereIn('pid', $menu_ids); - }); - }); + $query->where(fn($query) => $query->whereIn('id', $menu_ids)->orWhere(fn($query) => $query->where('is_menu', 0)->whereIn('pid', $menu_ids))); } $query = $query->select([ 'id', diff --git a/src/admin/src/Service/OperatorLogService.php b/src/admin/src/Service/OperatorLogService.php index 7b16bd6..e66a94b 100755 --- a/src/admin/src/Service/OperatorLogService.php +++ b/src/admin/src/Service/OperatorLogService.php @@ -31,11 +31,11 @@ class OperatorLogService try { // 页面url和名称 $page_url = request()->header('page-url'); - $parse_url = parse_url($page_url); + $parse_url = parse_url((string) $page_url); $fragment = $parse_url['fragment'] ?? '/'; // 抽出#后面的部分 $fragments = explode('?', $fragment); // 去掉querystring $page_url = array_shift($fragments); - $page_name = urldecode(request()->header('page-name', '')); // 页面名称 + $page_name = urldecode((string) request()->header('page-name', '')); // 页面名称 $relation_ids = json_encode($ids, JSON_UNESCAPED_UNICODE); // 如果没有版本启用,则只记录操作的id // 关联id-版本id记录 if(is_string($model) && $model) { diff --git a/src/admin/src/Service/PermissionService.php b/src/admin/src/Service/PermissionService.php index ecbf8c2..774b954 100755 --- a/src/admin/src/Service/PermissionService.php +++ b/src/admin/src/Service/PermissionService.php @@ -53,7 +53,7 @@ class PermissionService if (!is_array($callback)) { continue; } - $route = is_string($route) ? rtrim($route) : rtrim($v[0]->route); + $route = is_string($route) ? rtrim($route) : rtrim((string) $v[0]->route); $route_key = "$http_method::{$route}"; $options[] = [ 'value' => $route_key, @@ -127,7 +127,7 @@ class PermissionService if (empty($role_ids)) { return []; } - $routes = RoleMenu::query()->distinct(true)->select(['router_id'])->whereIn('role_id', $role_ids)->get()->toArray(); + $routes = RoleMenu::query()->distinct()->select(['router_id'])->whereIn('role_id', $role_ids)->get()->toArray(); return $routes ? array_column($routes, 'router_id') : []; } @@ -193,7 +193,7 @@ class PermissionService $resources = []; foreach ($list as $route) { if (Str::contains($route['permission'], '::')) { - $permissions = array_filter(explode(',', $route['permission'])); + $permissions = array_filter(explode(',', (string) $route['permission'])); foreach ($permissions as $permission) { [ $http_method, @@ -206,7 +206,7 @@ class PermissionService } } else { // 这段代码为兼容老的数据 - $paths = array_filter(explode('/', $route['path'])); + $paths = array_filter(explode('/', (string) $route['path'])); $suffix = array_pop($paths); $prefix = implode('/', $paths); if ($suffix == 'list') { @@ -245,7 +245,7 @@ class PermissionService ])->value('value')[$field] ?? []; $data = []; foreach ($open_apis as $route) { - [$http_method, $uri] = explode("::", $route, 2); + [$http_method, $uri] = explode("::", (string) $route, 2); $data[] = compact('http_method', 'uri'); } @@ -256,13 +256,12 @@ class PermissionService { $cache_key = $this->getPermissionCacheKey($user_id); $options = [ - 'routeParser' => 'FastRoute\\RouteParser\\Std', - 'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased', - 'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased', - 'routeCollector' => 'FastRoute\\RouteCollector', + 'routeParser' => \FastRoute\RouteParser\Std::class, + 'dataGenerator' => \FastRoute\DataGenerator\GroupCountBased::class, + 'dispatcher' => \FastRoute\Dispatcher\GroupCountBased::class, + 'routeCollector' => \FastRoute\RouteCollector::class, ]; if (!$dispatch_data = json_decode(Redis::get($cache_key), true)) { - /** @var RouteCollector $routeCollector */ $route_collector = new $options['routeCollector'](new $options['routeParser'], new $options['dataGenerator']); $this->processUserResource($route_collector, $user_id, $auth_type); $dispatch_data = $route_collector->getData(); @@ -359,7 +358,7 @@ class PermissionService protected function prepareHandler($handler): array { if (is_string($handler)) { - if (strpos($handler, '@') !== false) { + if (str_contains($handler, '@')) { return explode('@', $handler); } diff --git a/src/alert-manager/src/AlertJob.php b/src/alert-manager/src/AlertJob.php index bd08842..6883b4a 100644 --- a/src/alert-manager/src/AlertJob.php +++ b/src/alert-manager/src/AlertJob.php @@ -10,12 +10,8 @@ use HyperfAdmin\RuleEngine\Context\TimeContext; class AlertJob extends Job { - public $params; - - public function __construct($params) + public function __construct(public $params) { - // 这里最好是普通数据,不要使用携带 IO 的对象,比如 PDO 对象 - $this->params = $params; } public function handle() diff --git a/src/alert-manager/src/AlertService.php b/src/alert-manager/src/AlertService.php index f82deb1..a0c1866 100644 --- a/src/alert-manager/src/AlertService.php +++ b/src/alert-manager/src/AlertService.php @@ -22,8 +22,6 @@ class AlertService * * @param $params 数据 * @param int $delay 延时时间 单位秒 - * - * @return bool */ public function push($params, int $delay = 0): bool { diff --git a/src/base-utils/src/AKSK.php b/src/base-utils/src/AKSK.php index b4fbf51..4b749ea 100644 --- a/src/base-utils/src/AKSK.php +++ b/src/base-utils/src/AKSK.php @@ -6,14 +6,8 @@ namespace HyperfAdmin\BaseUtils; */ class AKSK { - private $access_key; - - private $secret_key; - - public function __construct($access_key, $secret_key) + public function __construct(private $access_key, private $secret_key) { - $this->access_key = $access_key; - $this->secret_key = $secret_key; } public function token($method, $path, $host, $query, $content_type, $body) @@ -40,7 +34,7 @@ class AKSK private function digest($secret, $data) { - return hash_hmac('sha1', $data, $secret, true); + return hash_hmac('sha1', (string) $data, (string) $secret, true); } private function sign($secret, $data) diff --git a/src/base-utils/src/AliyunOSS.php b/src/base-utils/src/AliyunOSS.php index 07597c3..ffe2f16 100644 --- a/src/base-utils/src/AliyunOSS.php +++ b/src/base-utils/src/AliyunOSS.php @@ -128,14 +128,14 @@ class AliyunOSS $conditions[] = [ 'starts-with', '$key', - rtrim($dir, '/') . '/', + rtrim((string) $dir, '/') . '/', ]; } $base64_policy = base64_encode(json_encode([ 'expiration' => $expiration, 'conditions' => $conditions, ])); - $signature = base64_encode(hash_hmac('sha1', $base64_policy, $this->access_key_secret, true)); + $signature = base64_encode(hash_hmac('sha1', $base64_policy, (string) $this->access_key_secret, true)); return [ 'OSSAccessKeyId' => $this->access_key, @@ -144,7 +144,7 @@ class AliyunOSS 'Signature' => $signature, 'expire' => $end, 'dir' => $dir, //这个参数是设置用户上传指定的前缀 - 'cdn' => $this->cdn ? rtrim($this->cdn, '/') : '', + 'cdn' => $this->cdn ? rtrim((string) $this->cdn, '/') : '', ]; } } diff --git a/src/base-utils/src/Guzzle.php b/src/base-utils/src/Guzzle.php index 2a6ece2..5c2f5e3 100644 --- a/src/base-utils/src/Guzzle.php +++ b/src/base-utils/src/Guzzle.php @@ -9,8 +9,6 @@ use GuzzleHttp\Cookie\CookieJar; class Guzzle { /** - * @param array $config - * * @return Client */ public static function create(array $config = []) @@ -39,9 +37,9 @@ class Guzzle $client = self::create([ 'timeout' => $headers['timeout'] ?? 10.0, ]); - $method = strtoupper($method); + $method = strtoupper((string) $method); $options = []; - $headers['charset'] = $headers['charset'] ?? 'UTF-8'; + $headers['charset'] ??= 'UTF-8'; $options['headers'] = $headers; if($method == 'GET' && $params) { $options['query'] = $params; @@ -49,7 +47,7 @@ class Guzzle if($method == 'POST') { $options['headers']['Content-Type'] = $headers['Content-Type'] ?? 'application/json'; if($options['headers']['Content-Type'] == 'application/json' && $params) { - $options['body'] = \GuzzleHttp\json_encode($params ? $params : (object)[]); + $options['body'] = \GuzzleHttp\json_encode($params ?: (object)[]); } if($options['headers']['Content-Type'] == 'application/x-www-form-urlencoded' && $params) { $options['form_params'] = $params; @@ -92,9 +90,7 @@ class Guzzle try { $options['headers']['X-No-Proxy'] = true; - $options['headers'] = array_merge($options['headers'], array_map(function ($item) { - return $item[0]; - }, request_header())); + $options['headers'] = array_merge($options['headers'], array_map(fn($item) => $item[0], request_header())); foreach ($options['headers'] as $key => $val) { $new_key = implode('-', array_map('ucfirst', explode('-', $key))); @@ -102,7 +98,7 @@ class Guzzle unset($options['headers'][$key]); } - $parse =parse_url($url); + $parse =parse_url((string) $url); $domain = isset($parse['port']) ? $parse['host'] . ':' . $parse['port'] : $parse['host']; $options['cookies'] = CookieJar::fromArray(cookie(), $domain); @@ -116,16 +112,11 @@ class Guzzle $options['form_params'] = $form_data; } - $request = retry(3, function () use ($client, $request, $url, $options) { - return $client->request($request->getMethod(), $url, $options); - }, 50); + $request = retry(3, fn() => $client->request($request->getMethod(), $url, $options), 50); $content = $request->getBody()->getContents(); $logger->info('proxy_success', compact('url', 'options')); return my_json_decode($content); - } catch (\GuzzleHttp\Exception\GuzzleException $e) { - $logger->error('proxy_fail', compact('url', 'options', 'e')); - throw new \Exception("proxy exception {$e}", 500); - } catch (\Throwable $e) { + } catch (\GuzzleHttp\Exception\GuzzleException|\Throwable $e) { $logger->error('proxy_fail', compact('url', 'options', 'e')); throw new \Exception("proxy exception {$e}", 500); } diff --git a/src/base-utils/src/Helper/array.php b/src/base-utils/src/Helper/array.php index 30b77c1..aa1963b 100644 --- a/src/base-utils/src/Helper/array.php +++ b/src/base-utils/src/Helper/array.php @@ -268,7 +268,7 @@ if(!function_exists('array_remove')) { if(!function_exists('array_get_node')) { function array_get_node($key, $arr = []) { - $path = explode('.', $key); + $path = explode('.', (string) $key); foreach($path as $key) { $key = trim($key); if(empty($arr) || !isset($arr[$key])) { diff --git a/src/base-utils/src/Helper/common.php b/src/base-utils/src/Helper/common.php index 4f7ca61..9a8c06a 100644 --- a/src/base-utils/src/Helper/common.php +++ b/src/base-utils/src/Helper/common.php @@ -183,11 +183,11 @@ if (!function_exists('encrypt')) { { $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; //$nh = rand(0,64); - $nh = strlen($txt) % 65; + $nh = strlen((string) $txt) % 65; $ch = $chars[$nh]; $mdKey = md5($key . $ch); $mdKey = substr($mdKey, $nh % 8, $nh % 8 + 7); - $txt = base64_encode($txt); + $txt = base64_encode((string) $txt); $tmp = ''; $i = 0; $j = 0; @@ -239,7 +239,7 @@ if (!function_exists('is_valid_date')) { if (!function_exists('str_var_replace')) { function str_var_replace($str, $data) { - preg_match_all('/{([\s\S]*?)}/', $str, $match); + preg_match_all('/{([\s\S]*?)}/', (string) $str, $match); $values = []; $vars = []; foreach (($match && $match[1] ? $match[1] : []) as $item) { @@ -256,7 +256,7 @@ if (!function_exists('convert_memory')) { { $unit = ['b', 'kb', 'mb', 'gb', 'tb', 'pb']; - return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . ' ' . $unit[$i]; + return @round($size / 1024 ** $i = floor(log($size, 1024)), 2) . ' ' . $unit[$i]; } } @@ -277,7 +277,7 @@ if (!function_exists('read_file')) { if (!function_exists('get_extension')) { function get_extension($file) { - return substr(strrchr($file, '.'), 1); + return substr(strrchr((string) $file, '.'), 1); } } @@ -363,7 +363,7 @@ if (!function_exists('http_build_url')) { if (!function_exists('replace_url_query')) { function replace_url_query($url, array $query) { - $parse = parse_url($url); + $parse = parse_url((string) $url); parse_str($parse['query'], $p); $parse['query'] = urldecode(http_build_query(array_merge($p, $query))); @@ -425,7 +425,7 @@ if (!function_exists('my_json_decode')) { if (!$json) { return $default; } - $json = preg_replace('@//[^"]+?$@mui', '', $json); + $json = preg_replace('@//[^"]+?$@mui', '', (string) $json); $json = preg_replace('@^\s*//.*?$@mui', '', $json); $json = $json ? @json_decode($json, true) : $default; if (is_null($json)) { @@ -524,10 +524,10 @@ if (!function_exists('generate_random_str')) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $random_str = ''; for ($i = 0; $i < $length; $i++) { - $random_str .= $characters[rand(0, strlen($characters) - 1)]; + $random_str .= $characters[random_int(0, strlen($characters) - 1)]; } - return trim($prefix) . $random_str; + return trim((string) $prefix) . $random_str; } } @@ -537,7 +537,7 @@ if (!function_exists('get_dir_filename')) { $handler = opendir($dir); $files = []; while (($filename = readdir($handler)) !== false) { - $filter_extension = $extension === '' ? true : strpos($filename, $extension); + $filter_extension = $extension === '' ? true : strpos($filename, (string) $extension); if (!($filename !== "." && $filename !== ".." && $filter_extension)) { continue; } @@ -556,34 +556,33 @@ if (!function_exists('get_dir_filename')) { if (!function_exists('sp_encrypt')) { function sp_encrypt($plaintext, $key) { - $key = substr(sha1($key, true), 0, 16); + $key = substr(sha1((string) $key, true), 0, 16); $iv = openssl_random_pseudo_bytes(16); $ciphertext = openssl_encrypt($plaintext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); - $ciphertext_base64 = urlsafe_b64encode($iv . $ciphertext); - return $ciphertext_base64; + return urlsafe_b64encode($iv . $ciphertext); } } if (!function_exists('sp_decrypt')) { function sp_decrypt($ciphertext_base64, $key) { - $key = substr(sha1($key, true), 0, 16); + $key = substr(sha1((string) $key, true), 0, 16); $ciphertext_dec = urlsafe_b64decode($ciphertext_base64); $iv_size = 16; - $iv_dec = substr($ciphertext_dec, 0, $iv_size); - $ciphertext_dec = substr($ciphertext_dec, $iv_size); - $plaintext_dec = openssl_decrypt($ciphertext_dec, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv_dec); + $iv_dec = substr((string) $ciphertext_dec, 0, $iv_size); + $ciphertext_dec = substr((string) $ciphertext_dec, $iv_size); - return $plaintext_dec; + return openssl_decrypt($ciphertext_dec, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv_dec); } } if (!function_exists('urlsafe_b64encode')) { function urlsafe_b64encode($string) { - $data = base64_encode($string); - $data = str_replace([ + $data = base64_encode((string) $string); + + return str_replace([ '+', '/', // '=', @@ -592,8 +591,6 @@ if (!function_exists('urlsafe_b64encode')) { '_', // '', ], $data); - - return $data; } } @@ -662,7 +659,6 @@ if (!function_exists('cookie')) { /** * 快捷方式,返回 request 相关 cookie * - * @param string $key * * @return mixed */ @@ -684,7 +680,6 @@ if (!function_exists('request_header')) { /** * 快捷方式,返回 request 相关 header * - * @param string $key * * @return mixed */ @@ -754,10 +749,10 @@ if (!function_exists('is_cli')) { if (!function_exists('xml2array')) { function xml2array($xml_string, $key = '') { - if (strpos($xml_string, '<') === false) { + if (!str_contains((string) $xml_string, '<')) { return []; } - $array = (array)@simplexml_load_string($xml_string, 'SimpleXMLElement', LIBXML_NOCDATA); + $array = (array)@simplexml_load_string((string) $xml_string, 'SimpleXMLElement', LIBXML_NOCDATA); if (!$key) { return $array; } @@ -804,7 +799,7 @@ if (!function_exists('now')) { if (!function_exists('is_json_str')) { function is_json_str($string) { - json_decode($string); + json_decode((string) $string); return (json_last_error() == JSON_ERROR_NONE); } } diff --git a/src/base-utils/src/Helper/system.php b/src/base-utils/src/Helper/system.php index d09d67d..0c5880d 100644 --- a/src/base-utils/src/Helper/system.php +++ b/src/base-utils/src/Helper/system.php @@ -123,17 +123,16 @@ if (!function_exists('filesystem_private_url')) { } $filesystem = make(FilesystemFactory::class)->get($bucket); if (Str::startsWith($save_file_path, 'http')) { - $save_file_path = parse_url($save_file_path)['path']; + $save_file_path = parse_url((string) $save_file_path)['path']; $parts = explode('/', $save_file_path); unset($parts[0]); $save_file_path = implode('/', $parts); } - $save_file_path = preg_replace('@^oss/@', '', $save_file_path); + $save_file_path = preg_replace('@^oss/@', '', (string) $save_file_path); try { switch (config("file.storage.{$bucket}.driver")) { case \Hyperf\Filesystem\Adapter\LocalAdapterFactory::class: return config("file.storage.{$bucket}.cdn") . $save_file_path; - break; case \Hyperf\Filesystem\Adapter\AliyunOssAdapterFactory::class; $adapter = $filesystem->getAdapter(); if (method_exists($adapter, 'signUrl')) { @@ -188,11 +187,7 @@ if (!function_exists('process_list_filter')) { $processes = []; } if (is_array($ignore)) { - $processes = array_filter($processes, function ($item) use ($ignore) { - return !Str::startsWith($item, array_map(function ($each) { - return Str::replaceLast('*', '', $each); - }, $ignore)); - }); + $processes = array_filter($processes, fn($item) => !Str::startsWith($item, array_map(fn($each) => Str::replaceLast('*', '', $each), $ignore))); } } if ($active = $rule['active'] ?? []) { diff --git a/src/base-utils/src/JWT.php b/src/base-utils/src/JWT.php index 73bf7ab..6ac6f25 100644 --- a/src/base-utils/src/JWT.php +++ b/src/base-utils/src/JWT.php @@ -37,9 +37,8 @@ class JWT } $base64_header = self::base64UrlEncode(json_encode(self::$header, JSON_UNESCAPED_UNICODE)); $base64_payload = self::base64UrlEncode(json_encode($payload, JSON_UNESCAPED_UNICODE)); - $token = $base64_header . '.' . $base64_payload . '.' . self::signature($base64_header . '.' . $base64_payload, self::$key, self::$header['alg']); - return $token; + return $base64_header . '.' . $base64_payload . '.' . self::signature($base64_header . '.' . $base64_payload, self::$key, self::$header['alg']); } /** @@ -116,9 +115,7 @@ class JWT * HMACSHA256签名 https://jwt.io/ 中HMACSHA256签名实现 * * @param string $input 为base64UrlEncode(header).".".base64UrlEncode(payload) - * @param string $key * @param string $alg 算法方式 - * * @return mixed */ private static function signature(string $input, string $key, string $alg = 'HS256') diff --git a/src/base-utils/src/Listener/DbQueryExecutedListener.php b/src/base-utils/src/Listener/DbQueryExecutedListener.php index 1aa101c..71ff93b 100644 --- a/src/base-utils/src/Listener/DbQueryExecutedListener.php +++ b/src/base-utils/src/Listener/DbQueryExecutedListener.php @@ -15,9 +15,6 @@ class DbQueryExecutedListener implements ListenerInterface ]; } - /** - * @param object $event - */ public function process(object $event) { if($event instanceof QueryExecuted) { @@ -73,9 +70,7 @@ class DbQueryExecutedListener implements ListenerInterface /** * 获取sql类型 * - * @param string $sql * - * @return string */ protected function getSqlType(string $sql): string { diff --git a/src/base-utils/src/Model/BaseModel.php b/src/base-utils/src/Model/BaseModel.php index d1afc54..8a623ef 100644 --- a/src/base-utils/src/Model/BaseModel.php +++ b/src/base-utils/src/Model/BaseModel.php @@ -35,7 +35,7 @@ class BaseModel extends Model */ public function where2query($where, $query = null) { - $query = $query ?? $this->newQuery(); + $query ??= $this->newQuery(); if (!$where) { return $query; } @@ -43,9 +43,7 @@ class BaseModel extends Model unset($where['__logic']); foreach ($where as $key => $item) { if (is_numeric($key) && is_array($item)) { - $query->where(function ($query) use ($item) { - return $this->where2query($item, $query); - }, null, null, $boolean); + $query->where(fn($query) => $this->where2query($item, $query), null, null, $boolean); continue; } if (!is_array($item)) { @@ -105,20 +103,20 @@ class BaseModel extends Model $where = []; $kw = request()->input('kw'); if ($kw) { - if (preg_match_all('/^\d+$/', $kw)) { + if (preg_match_all('/^\d+$/', (string) $kw)) { $where[$id_key] = $kw; - } elseif (preg_match_all('/^\d+?,/', $kw)) { - $where[$id_key] = explode(',', $kw); + } elseif (preg_match_all('/^\d+?,/', (string) $kw)) { + $where[$id_key] = explode(',', (string) $kw); } else { $where[$name_key] = ['like' => "%{$kw}%"]; } } $id = request()->input('id'); if ($id) { - if (preg_match_all('/^\d+$/', $id)) { + if (preg_match_all('/^\d+$/', (string) $id)) { $where[$id_key] = $id; - } elseif (preg_match_all('/^\d+?,/', $id)) { - $where[$id_key] = explode(',', $id); + } elseif (preg_match_all('/^\d+?,/', (string) $id)) { + $where[$id_key] = explode(',', (string) $id); } } if (!$default_query && !$where) { @@ -126,7 +124,7 @@ class BaseModel extends Model } $where['__logic'] = $logic; $where = array_merge($where, $extra_where); - $attr['limit'] = $attr['limit'] ?? 100; + $attr['limit'] ??= 100; return $this->list($where, $attr)->toArray(); } diff --git a/src/base-utils/src/Model/EsBaseModel.php b/src/base-utils/src/Model/EsBaseModel.php index 22229ad..f75a61c 100644 --- a/src/base-utils/src/Model/EsBaseModel.php +++ b/src/base-utils/src/Model/EsBaseModel.php @@ -276,7 +276,7 @@ class EsBaseModel ]; try { return $this->client->get($params); - } catch (\Exception $e) { + } catch (\Exception) { return false; } } @@ -491,7 +491,7 @@ class EsBaseModel foreach ($val_tile as $operator => $each) { if (isset($this->operator_map[$operator])) { $mapping_date_format = $this->mapping['properties'][$key]['format'] ?? null; - $query['bool']['filter']['bool']['must'][$index]['range'][$key][$this->operator_map[$operator]] = $is_time_field ? date($mapping_date_format ? $this->transDateFormat($mapping_date_format) : "Y-m-d\TH:i:s", strtotime($each)) : $each; + $query['bool']['filter']['bool']['must'][$index]['range'][$key][$this->operator_map[$operator]] = $is_time_field ? date($mapping_date_format ? $this->transDateFormat($mapping_date_format) : "Y-m-d\TH:i:s", strtotime((string) $each)) : $each; } } continue; @@ -500,9 +500,7 @@ class EsBaseModel if (is_array($val)) { $query['bool']['filter']['bool']['must'][] = [ 'terms' => [ - $key => array_map(function ($each) { - return is_numeric($each) ? $each * 1 : $each; - }, $val), + $key => array_map(fn($each) => is_numeric($each) ? $each * 1 : $each, $val), ], ]; continue; diff --git a/src/base-utils/src/Redis/Redis.php b/src/base-utils/src/Redis/Redis.php index d2256a8..2037e98 100644 --- a/src/base-utils/src/Redis/Redis.php +++ b/src/base-utils/src/Redis/Redis.php @@ -12,17 +12,14 @@ use HyperfAdmin\BaseUtils\Log; */ class Redis { - private $pool; - /** * @var \Redis */ private $redis; - public function __construct($pool = 'default') + public function __construct(private $pool = 'default') { - $this->pool = $pool; - $this->redis = container(RedisFactory::class)->get($pool); + $this->redis = container(RedisFactory::class)->get($this->pool); } public static function conn($pool = 'default') @@ -73,8 +70,6 @@ class Redis } /** - * @param string $name - * @param int $expired * @param mixed $callable * * @return array|null @@ -84,7 +79,7 @@ class Redis if ($this->redis->exists($name)) { Log::get('redis')->info(sprintf('get %s from cache', $name)); - return json_decode($this->redis->get($name), true); + return json_decode((string) $this->redis->get($name), true); } $data = call($callable); if ($data) { diff --git a/src/base-utils/src/Redis/RedisArray.php b/src/base-utils/src/Redis/RedisArray.php index 466d664..3ce9741 100644 --- a/src/base-utils/src/Redis/RedisArray.php +++ b/src/base-utils/src/Redis/RedisArray.php @@ -25,7 +25,7 @@ class RedisArray implements \ArrayAccess { $val = $this->redis->hGet($this->name, (string)$offset); if(is_json_str($val)) { - return json_decode($val, true); + return json_decode((string) $val, true); } return $val; diff --git a/src/base-utils/src/Redis/RedisQueue.php b/src/base-utils/src/Redis/RedisQueue.php index d7ee8b4..c054165 100644 --- a/src/base-utils/src/Redis/RedisQueue.php +++ b/src/base-utils/src/Redis/RedisQueue.php @@ -5,10 +5,6 @@ use Hyperf\Redis\RedisFactory; class RedisQueue { - protected $cluster = 'default'; - - protected $queue_name = 'redis_queue_default'; - protected $queue_wait_ack_suffix = 'wait_ack'; protected $wait_timeout = 10; @@ -20,11 +16,9 @@ class RedisQueue */ protected $redis; - public function __construct($queue_name, $cluster = 'default') + public function __construct(protected $queue_name, protected $cluster = 'default') { - $this->queue_name = $queue_name; - $this->cluster = $cluster; - $this->redis = container(RedisFactory::class)->get($cluster); + $this->redis = container(RedisFactory::class)->get($this->cluster); } public function length($name = '') @@ -65,8 +59,8 @@ class RedisQueue } $msg = $this->getOne($this->queue_name, $filter); if($msg) { - $msg_id = md5($msg); - $data = json_decode($msg, true); + $msg_id = md5((string) $msg); + $data = json_decode((string) $msg, true); $ret = array_merge($data, ['_queue_msg_id' => $msg_id]); $this->redis->rPush($this->getAckQueueName(), json_encode(array_merge($ret, ['_time' => time()]))); @@ -87,7 +81,7 @@ class RedisQueue } foreach(range(0, $len - 1) as $index) { $ele = $this->redis->lIndex($queue_name, $index); - $ele_array = json_decode($ele, true); + $ele_array = json_decode((string) $ele, true); if(array_intersect($ele_array, $filter)) { $this->redis->lRem($queue_name, $ele, 1); @@ -132,7 +126,7 @@ class RedisQueue { $list = $this->redis->lRange($this->getAckQueueName(), 0, -1); foreach($list as &$item) { - $item = json_decode($item, true); + $item = json_decode((string) $item, true); } unset($item); diff --git a/src/base-utils/src/Scaffold/Controller/AbstractController.php b/src/base-utils/src/Scaffold/Controller/AbstractController.php index a92d207..3473a6c 100644 --- a/src/base-utils/src/Scaffold/Controller/AbstractController.php +++ b/src/base-utils/src/Scaffold/Controller/AbstractController.php @@ -77,9 +77,7 @@ abstract class AbstractController extends Controller */ public function info() { - $tableHeader = array_values(array_filter($this->getListHeader(), function ($item) { - return !($item['hidden'] ?? false); - })); + $tableHeader = array_values(array_filter($this->getListHeader(), fn($item) => !($item['hidden'] ?? false))); $filter = $this->getListFilters(); $actions = $this->options['table']['rowActions'] ?? []; $actions = $this->buttonConfigConvert($actions); @@ -125,7 +123,7 @@ abstract class AbstractController extends Controller foreach ($config as $key => $item) { $buttons[$key]['text'] = $item['text'] ?? ''; $buttons[$key]['type'] = isset($item['target']) ? $item['type'] ?? 'jump' : (isset($item['rules']) ? 'form' : (isset($item['api']) ? 'api' : 'jump')); - $buttons[$key]['target'] = isset($item['target']) ? $item['target'] : (isset($item['api']) ? $item['api'] : ($item['action'] ?? '')); + $buttons[$key]['target'] = $item['target'] ?? $item['api'] ?? $item['action'] ?? ''; $buttons[$key]['props'] = isset($item['target']) ? $item['props'] ?? [] : [ 'icon' => $item['icon'] ?? '', 'circle' => $item['circle'] ?? false, @@ -160,11 +158,7 @@ abstract class AbstractController extends Controller $page = $this->request->input('_page', 1); $size = $this->request->input('_size', 20); $table_options = $this->getListHeader(); - $columns = array_unique(array_values(array_map(function ($item) { - return explode('.', $item)[0]; - }, array_column(array_filter($table_options, function ($each) { - return isset($each['virtual_field']) ? !$each['virtual_field'] : true; - }), 'field')))); + $columns = array_unique(array_values(array_map(fn($item) => explode('.', (string) $item)[0], array_column(array_filter($table_options, fn($each) => isset($each['virtual_field']) ? !$each['virtual_field'] : true), 'field')))); $filter_options = $this->getListFilters(); $filters = []; if (!empty($filter_options)) { @@ -184,23 +178,13 @@ abstract class AbstractController extends Controller } $conditions = $this->options['where'] ?? []; foreach ($filters as $field => $value) { - switch ($filter_options[$field]['search_type'] ?? '') { - case 'between': - $conditions[$field] = ['between' => $value]; - break; - case 'full_like': - $conditions[$field] = ['like' => "%{$value}%"]; - break; - case 'suffix_like': - $conditions[$field] = ['like' => "{$value}%"]; - break; - case 'prefix_like': - $conditions[$field] = ['like' => "%{$value}"]; - break; - default: - $conditions[$field] = $value; - break; - } + $conditions[$field] = match ($filter_options[$field]['search_type'] ?? '') { + 'between' => ['between' => $value], + 'full_like' => ['like' => "%{$value}%"], + 'suffix_like' => ['like' => "{$value}%"], + 'prefix_like' => ['like' => "%{$value}"], + default => $value, + }; } $order_by = $this->options['order_by'] ?? ''; $group_by = $this->options['group_by'] ?? ''; @@ -322,7 +306,7 @@ abstract class AbstractController extends Controller $ret = Db::connection($pool)->table("{$db}.{$table}")->whereIn($foreign_key, $where)->get($columns)->toArray(); array_change_v2k($ret, $foreign_key); foreach ($list as &$item) { - $append = isset($ret[$item[$local_key]]) ? $ret[$item[$local_key]] : $default; + $append = $ret[$item[$local_key]] ?? $default; unset($append[$foreign_key]); $item = array_merge($item, $append); } @@ -352,7 +336,7 @@ abstract class AbstractController extends Controller $ret = Db::connection($pool)->table("{$db}.{$table}")->whereIn($foreign_key, $where)->get($columns)->toArray(); $ret = array_group_by($ret, $foreign_key); foreach ($list as &$item) { - $group = isset($ret[$item[$local_key]]) ? $ret[$item[$local_key]] : $default; + $group = $ret[$item[$local_key]] ?? $default; $append = []; foreach (array_keys($default) as $field) { $append[$field] = array_values(array_unique(array_filter(array_column($group, $field)))); @@ -366,7 +350,7 @@ abstract class AbstractController extends Controller public function explodeHasStr($has_str) { - $check = preg_match('/([a-zA-Z_0-9]+\.)?([a-zA-Z_0-9]+)\.([a-zA-Z_0-9]+):([a-zA-Z_0-9]+->)?([a-zA-Z_,0-9 ]+)/', $has_str, $match); + $check = preg_match('/([a-zA-Z_0-9]+\.)?([a-zA-Z_0-9]+)\.([a-zA-Z_0-9]+):([a-zA-Z_0-9]+->)?([a-zA-Z_,0-9 ]+)/', (string) $has_str, $match); if ($check === 0) { return false; } @@ -377,11 +361,9 @@ abstract class AbstractController extends Controller $table, $local_key, $foreign_key, - ] = array_map(function ($item) { - return str_replace(['.', '->'], '', $item); - }, $match); - $pool = $pool ? $pool : 'default'; - $local_key = $local_key ? $local_key : 'id'; + ] = array_map(fn($item) => str_replace(['.', '->'], '', $item), $match); + $pool = $pool ?: 'default'; + $local_key = $local_key ?: 'id'; $columns = explode(',', $foreign_key); if (!$columns) { return false; @@ -389,7 +371,7 @@ abstract class AbstractController extends Controller $foreign_key = $columns[0]; $default = []; foreach ($columns as $each) { - $default[trim(preg_replace('/[\w ]+as +/i', '', trim($each)))] = null; + $default[trim((string) preg_replace('/[\w ]+as +/i', '', trim($each)))] = null; } return array_values(compact('pool', 'db', 'table', 'local_key', 'foreign_key', 'columns', 'default')); } @@ -397,11 +379,7 @@ abstract class AbstractController extends Controller public function getTreeNodeChilds($id) { $tableOptions = $this->getListHeader(); - $columns = array_unique(array_values(array_map(function ($item) { - return explode('.', $item)[0]; - }, array_column(array_filter($tableOptions, function ($each) { - return isset($each['virtual_field']) ? !$each['virtual_field'] : true; - }), 'field')))); + $columns = array_unique(array_values(array_map(fn($item) => explode('.', (string) $item)[0], array_column(array_filter($tableOptions, fn($each) => isset($each['virtual_field']) ? !$each['virtual_field'] : true), 'field')))); $order_by = $this->options['order_by'] ?? ''; $attr['select'] = $columns; $order_by && $attr['order_by'] = $order_by; @@ -677,13 +655,9 @@ abstract class AbstractController extends Controller public function getFields() { $form = $this->formOptionsConvert(); - $form = array_filter($form, function ($item) { - return !($item['virtual_field'] ?? false); - }); + $form = array_filter($form, fn($item) => !($item['virtual_field'] ?? false)); $fields = array_column($form, 'field'); - $fields = array_map(function ($item) { - return explode('.', $item)[0]; - }, $fields); + $fields = array_map(fn($item) => explode('.', (string) $item)[0], $fields); return array_unique($fields); } @@ -700,7 +674,7 @@ abstract class AbstractController extends Controller $filter_options = []; foreach ($this->options['filter'] as $key => $item) { $filter_option_key = is_array($item) ? $key : str_replace('%', '', $item); - $field_extra = explode('|', $filter_option_key); + $field_extra = explode('|', (string) $filter_option_key); $field = $field_extra[0]; $form_option = []; if (isset($form_fields[$field]) && isset($form_options[$form_fields[$field]])) { @@ -726,7 +700,7 @@ abstract class AbstractController extends Controller if (Str::startsWith($item, '%') !== false && Str::endsWith($item, '%') !== false) { $search_type = 'full_like'; } - if (strpos(($filter_options[$filter_option_key]['type'] ?? ''), 'range') !== false) { + if (str_contains(($filter_options[$filter_option_key]['type'] ?? ''), 'range')) { $search_type = 'between'; } $filter_options[$filter_option_key]['search_type'] = $search_type; @@ -803,7 +777,7 @@ abstract class AbstractController extends Controller } $form = []; foreach ($formOption as $key => $val) { - $field_extra = explode('|', $key); + $field_extra = explode('|', (string) $key); $field = $field_extra[0]; $title = $field_extra[1] ?? $field_extra[0]; $biz = []; @@ -817,7 +791,7 @@ abstract class AbstractController extends Controller continue; } $rule = $biz['rule'] ?? ''; - $rules = is_array($rule) ? $rule : explode('|', $rule); + $rules = is_array($rule) ? $rule : explode('|', (string) $rule); $_form = [ 'title' => $title, 'field' => $field, @@ -831,15 +805,15 @@ abstract class AbstractController extends Controller $_form['value'] = (array)$_form['value']; break; case 'image': - $biz['props']['limit'] = $biz['props']['limit'] ?? 1; + $biz['props']['limit'] ??= 1; break; case 'select': if (isset($biz['props']['selectApi']) && $_form['value']) { - $biz['options'] = select_options($biz['props']['selectApi'], is_array($_form['value']) ? $_form['value'] : explode(',', $_form['value'])); + $biz['options'] = select_options($biz['props']['selectApi'], is_array($_form['value']) ? $_form['value'] : explode(',', (string) $_form['value'])); } // fixme sub-form value 不好取, 先默认查一次 if (isset($biz['props']['selectApi']) && $depth) { - $biz['options'] = select_options($biz['props']['selectApi'], is_array($_form['value']) ? $_form['value'] : explode(',', $_form['value'])); + $biz['options'] = select_options($biz['props']['selectApi'], is_array($_form['value']) ? $_form['value'] : explode(',', (string) $_form['value'])); } break; default: @@ -943,7 +917,7 @@ abstract class AbstractController extends Controller */ public function getFormRules($options = null) { - $formOptions = $options ? $options : ($this->options['form'] ?? []); + $formOptions = $options ?: $this->options['form'] ?? []; $rules = []; foreach ($formOptions as $key => $val) { if (is_array($val) && ($val['form'] ?? true) === false) { @@ -978,7 +952,7 @@ abstract class AbstractController extends Controller $data_source = $this->request->all(); $pk_val = $data_source[$pk] ?? null; foreach ($rules as &$val) { - $rule_parts = is_array($val) ? $val : explode('|', $val); + $rule_parts = is_array($val) ? $val : explode('|', (string) $val); foreach ($rule_parts as &$rule) { if ($pk_val && is_string($rule) && Str::startsWith($rule, 'unique')) { // unique rule without itself in update @@ -1088,7 +1062,7 @@ abstract class AbstractController extends Controller $up = $this->request->all(); $up_fields = array_keys($up); foreach ($rules as $key => $val) { - $field_extra = explode('|', $key); + $field_extra = explode('|', (string) $key); $field = $field_extra[0]; if (!in_array($field, $up_fields)) { unset($rules[$key]); @@ -1117,7 +1091,6 @@ abstract class AbstractController extends Controller * * @param string $message * @param int $code - * @param \Throwable $previous * * @return void * @throws \Exception @@ -1141,7 +1114,7 @@ abstract class AbstractController extends Controller { $validates = []; foreach ($rules as $item) { - $parts = explode(':', $item); + $parts = explode(':', (string) $item); $rule = array_shift($parts); switch ($rule) { case 'required': @@ -1232,9 +1205,7 @@ abstract class AbstractController extends Controller $filters = []; if ($filter_options = $this->getListFilters()) { array_change_v2k($filter_options, 'field'); - $filters = array_filter($this->request->inputs(array_keys($filter_options)), function ($item) { - return !in_array($item, [null, '']); - }); + $filters = array_filter($this->request->inputs(array_keys($filter_options)), fn($item) => !in_array($item, [null, ''])); } $list = []; if (is_array($notices)) { @@ -1289,7 +1260,7 @@ abstract class AbstractController extends Controller { $const = []; if ($model = $this->model_class ?? '') { - $const = constant($model . '::' . strtoupper($field)) ?? []; + $const = constant($model . '::' . strtoupper((string) $field)) ?? []; } $options = []; foreach ($const as $k => $v) { @@ -1305,8 +1276,6 @@ abstract class AbstractController extends Controller /** * 新版本检查 * - * @param int $id - * @param int $last_ver_id * * @return array */ diff --git a/src/base-utils/src/Scaffold/Controller/Controller.php b/src/base-utils/src/Scaffold/Controller/Controller.php index 305a7bb..b57874e 100644 --- a/src/base-utils/src/Scaffold/Controller/Controller.php +++ b/src/base-utils/src/Scaffold/Controller/Controller.php @@ -82,7 +82,7 @@ abstract class Controller protected function getCalledSource($get_arr = false) { $uri = $this->getRequestUri(); - $parts = array_filter(explode('/', $uri)); + $parts = array_filter(explode('/', (string) $uri)); if ($get_arr) { return array_values($parts); } @@ -98,9 +98,7 @@ abstract class Controller /** * 返回成功的请求 * - * @param array $data * @param string $message - * * @return array */ public function success(array $data = [], $message = '操作成功') @@ -115,8 +113,6 @@ abstract class Controller } /** - * @param int $code - * @param string|null $message * * @return array */ diff --git a/src/base-utils/src/classmap/OssAdapter.php b/src/base-utils/src/classmap/OssAdapter.php index c9e322e..91dca43 100644 --- a/src/base-utils/src/classmap/OssAdapter.php +++ b/src/base-utils/src/classmap/OssAdapter.php @@ -47,26 +47,21 @@ class OssAdapter extends AbstractAdapter $isCName = false; $token = null; $this->supports = new Supports(); - try { - $this->bucket = $config['bucket']; - empty($config['endpoint']) ? null : $this->endpoint = $config['endpoint']; - empty($config['timeout']) ? $config['timeout'] = 3600 : null; - empty($config['connectTimeout']) ? $config['connectTimeout'] = 10 : null; - - if (!empty($config['isCName'])) { - $isCName = true; - } - if (!empty($config['token'])) { - $token = $config['token']; - } - $this->oss = new OssClient( - $config['accessId'], $config['accessSecret'], $this->endpoint, $isCName, $token - ); - $this->oss->setTimeout($config['timeout']); - $this->oss->setConnectTimeout($config['connectTimeout']); - } catch (Exception $e) { - throw $e; + $this->bucket = $config['bucket']; + empty($config['endpoint']) ? null : $this->endpoint = $config['endpoint']; + empty($config['timeout']) ? $config['timeout'] = 3600 : null; + empty($config['connectTimeout']) ? $config['connectTimeout'] = 10 : null; + if (!empty($config['isCName'])) { + $isCName = true; } + if (!empty($config['token'])) { + $token = $config['token']; + } + $this->oss = new OssClient( + $config['accessId'], $config['accessSecret'], $this->endpoint, $isCName, $token + ); + $this->oss->setTimeout($config['timeout']); + $this->oss->setConnectTimeout($config['connectTimeout']); } /** @@ -214,7 +209,6 @@ class OssAdapter extends AbstractAdapter * Create a directory. * * @param string $dirname directory name - * @param Config $config * * @return array|false */ @@ -422,7 +416,6 @@ class OssAdapter extends AbstractAdapter /** * Get OSS Options - * @param Config $config * @return array */ private function getOssOptions(Config $config) diff --git a/src/base-utils/src/classmap/ProviderConfig.php b/src/base-utils/src/classmap/ProviderConfig.php index 1a2af3b..6d1ca8e 100644 --- a/src/base-utils/src/classmap/ProviderConfig.php +++ b/src/base-utils/src/classmap/ProviderConfig.php @@ -22,15 +22,13 @@ class ProviderConfig { if (!static::$providerConfigs) { $providers = Composer::getMergedExtra('hyperf')['config'] ?? []; - $handel = function ($arr) { - return array_map(function ($item) { - $explode = explode('@', $item); - return [ - 'provider' => $explode[0], - 'weight' => $explode[1] ?? 0, - ]; - }, $arr); - }; + $handel = (fn($arr) => array_map(function ($item) { + $explode = explode('@', $item); + return [ + 'provider' => $explode[0], + 'weight' => $explode[1] ?? 0, + ]; + }, $arr)); $package = $handel($providers); array_change_v2k($package, 'provider'); @@ -43,9 +41,7 @@ class ProviderConfig } $providers = array_values($package); - usort($providers, function ($a, $b) { - return intval($a['weight'] > $b['weight']); - }); + usort($providers, fn($a, $b) => intval($a['weight'] > $b['weight'])); $providers = array_column($providers, 'provider'); static::$providerConfigs = static::loadProviders($providers); } diff --git a/src/base-utils/src/config/routes.php b/src/base-utils/src/config/routes.php index 89e0b1e..4e1dc02 100644 --- a/src/base-utils/src/config/routes.php +++ b/src/base-utils/src/config/routes.php @@ -3,9 +3,7 @@ use Hyperf\HttpServer\Router\Router; // 健康检查 -Router::get('/ping', function () { - return [ - 'code' => 200, - 'message' => 'ok', - ]; -}); +Router::get('/ping', fn() => [ + 'code' => 200, + 'message' => 'ok', +]); diff --git a/src/config-center/src/Controller/ConfigCenterController.php b/src/config-center/src/Controller/ConfigCenterController.php index 3b44404..d7b6a6d 100644 --- a/src/config-center/src/Controller/ConfigCenterController.php +++ b/src/config-center/src/Controller/ConfigCenterController.php @@ -94,7 +94,7 @@ class ConfigCenterController extends AdminAbstractController public function beforeFormResponse($id, &$data) { - $data['owner_uids'] = array_filter(array_map('intval', explode(',', $data['owner_uids']))); + $data['owner_uids'] = array_filter(array_map('intval', explode(',', (string) $data['owner_uids']))); } public function beforeSave($id, &$data) diff --git a/src/config-center/src/Install/InstallCommand.php b/src/config-center/src/Install/InstallCommand.php index f5a6cb1..f389524 100644 --- a/src/config-center/src/Install/InstallCommand.php +++ b/src/config-center/src/Install/InstallCommand.php @@ -22,7 +22,7 @@ class InstallCommand extends HyperfCommand $sql = file_get_contents(__DIR__ . '/install.sql'); - $re = Db::connection('config_center')->getPdo()->exec($sql); + Db::connection('config_center')->getPdo()->exec($sql); $this->output->success('config_center db install success'); } diff --git a/src/cron-center/src/CommandJobAbstract.php b/src/cron-center/src/CommandJobAbstract.php index 2b91b89..a2a3f12 100644 --- a/src/cron-center/src/CommandJobAbstract.php +++ b/src/cron-center/src/CommandJobAbstract.php @@ -55,7 +55,7 @@ class CommandJobAbstract extends HyperfCommand $callback = function () { try { $this->beforeRun(); - call([$this, 'handle']); + call($this->handle(...)); $this->afterRun(); } catch (\Throwable $throwable) { $this->onError($throwable); diff --git a/src/cron-center/src/Controller/CronNodeController.php b/src/cron-center/src/Controller/CronNodeController.php index f6851ab..b66d799 100644 --- a/src/cron-center/src/Controller/CronNodeController.php +++ b/src/cron-center/src/Controller/CronNodeController.php @@ -51,7 +51,7 @@ class CronNodeController extends AbstractController CronNodes::STATUS_LOSS => 'danger', ], 'render' => function ($status, $row) { - if ((time() - strtotime($row['updated_at'])) > 60) { + if ((time() - strtotime((string) $row['updated_at'])) > 60) { return CronNodes::STATUS_LOSS; } diff --git a/src/cron-center/src/Controller/CrontabController.php b/src/cron-center/src/Controller/CrontabController.php index e5c1abc..6a61e68 100644 --- a/src/cron-center/src/Controller/CrontabController.php +++ b/src/cron-center/src/Controller/CrontabController.php @@ -168,9 +168,7 @@ class CrontabController extends AbstractController '运行次数: {state.counter}', ], ], - 'render' => function () { - return '悬浮查看'; - }, + 'render' => fn() => '悬浮查看', ], ], 'rowActions' => [ @@ -207,7 +205,7 @@ class CrontabController extends AbstractController public function beforeFormResponse($id, &$record) { - $record['bind_nodes'] = array_map('intval', explode(',', $record['bind_nodes'])); + $record['bind_nodes'] = array_map('intval', explode(',', (string) $record['bind_nodes'])); } public function trigger($id) diff --git a/src/cron-center/src/CronManager.php b/src/cron-center/src/CronManager.php index 3bb41ff..0b0630a 100644 --- a/src/cron-center/src/CronManager.php +++ b/src/cron-center/src/CronManager.php @@ -13,13 +13,10 @@ class CronManager */ private $config; - private $db; - public function __construct() { $container = ApplicationContext::getContainer(); $this->config = $container->get(ConfigInterface::class); - $this->db = $this->getConn(); } public function addConfig() @@ -71,9 +68,9 @@ class CronManager } $list = $query->where('status', 1)->where('is_deleted', 0)->get()->toArray(); foreach ($list as &$item) { - $item['config'] = json_decode($item['config'], true); - $item['state'] = json_decode($item['state'], true); - $item['alert_rule'] = json_decode($item['alert_rule'], true); + $item['config'] = json_decode((string) $item['config'], true); + $item['state'] = json_decode((string) $item['state'], true); + $item['alert_rule'] = json_decode((string) $item['alert_rule'], true); unset($item); } @@ -106,7 +103,7 @@ class CronManager if (!$job) { return false; } - $job['config'] = json_decode($job['config'], true); + $job['config'] = json_decode((string) $job['config'], true); return $this->convertCrontab($job); } @@ -127,9 +124,8 @@ class CronManager ->setSingleton($item['singleton'] ?? true) ->setOnOneServer($item['on_one_server'] ?? true) ->setCallback($callback); - break; case 'class': - $class = explode('::', $config['execute']); + $class = explode('::', (string) $config['execute']); $callback = [$class[0], 'run', $config['params']]; return (new Crontab)->setId($item['id']) @@ -138,7 +134,6 @@ class CronManager ->setSingleton($item['singleton'] ?? true) ->setOnOneServer($item['on_one_server'] ?? false) ->setCallback($callback); - break; case 'gateway': $callback = [ 'api' => $config['api'], @@ -154,7 +149,6 @@ class CronManager ->setSingleton($item['singleton'] ?? true) ->setOnOneServer($item['on_one_server'] ?? false) ->setCallback($callback); - break; default: return false; } @@ -214,7 +208,7 @@ class CronManager { $state = $this->getConn()->table('cron_jobs')->find($id)['state']; - return $state ? json_decode($state, true) : []; + return $state ? json_decode((string) $state, true) : []; } public function setJobState($id, $data) diff --git a/src/cron-center/src/CrontabDispatcherProcess.php b/src/cron-center/src/CrontabDispatcherProcess.php index ebfac67..681f1ea 100644 --- a/src/cron-center/src/CrontabDispatcherProcess.php +++ b/src/cron-center/src/CrontabDispatcherProcess.php @@ -58,7 +58,7 @@ class CrontabDispatcherProcess extends ProcessCrontabDispatcherProcess $crontabs = $this->getCrontabs(); $this->logger->info(sprintf('Crontab dispatcher the %s time, jobs total %s', $this->counter, count($crontabs))); $last = time(); - foreach ($crontabs ?? [] as $key => $crontab) { + foreach ($crontabs ?? [] as $crontab) { $time = $this->parser->parse($crontab->getRule(), $last); if ($time) { foreach ($time as $t) { diff --git a/src/cron-center/src/Executor.php b/src/cron-center/src/Executor.php index 33754dd..5229adb 100644 --- a/src/cron-center/src/Executor.php +++ b/src/cron-center/src/Executor.php @@ -14,17 +14,14 @@ use Symfony\Component\Console\Output\NullOutput; class Executor extends StrategyExecutor { - private $manager; - public function __construct(ContainerInterface $container) { parent::__construct($container); - $this->manager = new CronManager(); } public function execute(Crontab $crontab) { - if (!($crontab instanceof Crontab) || !$crontab->getCallback()) { + if (!$crontab->getCallback()) { return false; } $handle = $crontab->getType() . 'Handle'; @@ -90,9 +87,7 @@ class Executor extends StrategyExecutor public function evalHandle(Crontab $crontab) { - return function () use ($crontab) { - return eval($crontab->getCallback()); - }; + return fn() => eval($crontab->getCallback()); } protected function runInSingleton(Crontab $crontab, Closure $runnable): Closure diff --git a/src/cron-center/src/Install/InstallCommand.php b/src/cron-center/src/Install/InstallCommand.php index b9a2ef9..974f457 100644 --- a/src/cron-center/src/Install/InstallCommand.php +++ b/src/cron-center/src/Install/InstallCommand.php @@ -22,7 +22,7 @@ class InstallCommand extends HyperfCommand $sql = file_get_contents(__DIR__ . '/install.sql'); - $re = Db::connection('cron_center')->getPdo()->exec($sql); + Db::connection('cron_center')->getPdo()->exec($sql); $this->output->success('cron_center db install success'); } diff --git a/src/data-focus/src/Controller/DsnController.php b/src/data-focus/src/Controller/DsnController.php index 0706509..c524975 100644 --- a/src/data-focus/src/Controller/DsnController.php +++ b/src/data-focus/src/Controller/DsnController.php @@ -48,9 +48,7 @@ class DsnController extends AbstractController [ 'field' => 'create_uid', 'title' => '创建者', - 'render' => function ($val, $row) { - return $row['realname']; - }, + 'render' => fn($val, $row) => $row['realname'], ], ], 'rowActions' => [ diff --git a/src/data-focus/src/Install/InstallCommand.php b/src/data-focus/src/Install/InstallCommand.php index 4780087..2a26c5a 100644 --- a/src/data-focus/src/Install/InstallCommand.php +++ b/src/data-focus/src/Install/InstallCommand.php @@ -22,7 +22,7 @@ class InstallCommand extends HyperfCommand $sql = file_get_contents(__DIR__ . '/install.sql'); - $re = Db::connection('cron_center')->getPdo()->exec($sql); + Db::connection('cron_center')->getPdo()->exec($sql); $this->output->success('data_focus db install success'); } diff --git a/src/data-focus/src/Service/Dsn.php b/src/data-focus/src/Service/Dsn.php index b9ba3f7..f7575c5 100644 --- a/src/data-focus/src/Service/Dsn.php +++ b/src/data-focus/src/Service/Dsn.php @@ -7,11 +7,8 @@ use HyperfAdmin\BaseUtils\Redis\Redis; class Dsn { - private $config; - - public function __construct(ConfigInterface $config) + public function __construct(private readonly ConfigInterface $config) { - $this->config = $config; } public function initAll() @@ -24,7 +21,7 @@ class Dsn // todo decrypt //$dsn_list = $this->config->decryptOne($dsn_list); foreach($dsn_list as $dsn) { - $method = 'add' . strtolower(DsnModel::$types[$dsn['type']]); + $method = 'add' . strtolower((string) DsnModel::$types[$dsn['type']]); if(method_exists($this, $method)) { $this->{$method}($dsn['name'], $dsn['config']); } @@ -51,7 +48,7 @@ class Dsn if(!$dsn) { return false; } - $method = $type . strtolower(DsnModel::$types[$dsn['type']]); + $method = $type . strtolower((string) DsnModel::$types[$dsn['type']]); $this->{$method}($dsn['name'], $dsn['config']); } diff --git a/src/data-focus/src/Util/CodeRunner.php b/src/data-focus/src/Util/CodeRunner.php index e0748c1..a6a066d 100644 --- a/src/data-focus/src/Util/CodeRunner.php +++ b/src/data-focus/src/Util/CodeRunner.php @@ -27,10 +27,10 @@ class CodeRunner $result = []; $errors = []; $startTime = microtime(true); - $namespace = sprintf("PHPSandbox_%s_%s", md5($code), (int)(microtime(true) * 1000)); + $namespace = sprintf("PHPSandbox_%s_%s", md5((string) $code), (int)(microtime(true) * 1000)); $this->namespace = $namespace; $this->runner->setNamespace($namespace); - if(preg_match_all('/df_\w+/', $code, $m)) { + if(preg_match_all('/df_\w+/', (string) $code, $m)) { $plugins = PluginFunction::query() ->where('status', PluginFunction::STATUS_YES) ->whereIn('func_name', array_unique($m[0])) @@ -43,7 +43,7 @@ class CodeRunner $code = implode("\n", $plugin_str) . $code; } try { - if(preg_match_all('/<\?(?:php|=).*?\?>/msui', $code, $match)) { + if(preg_match_all('/<\?(?:php|=).*?\?>/msui', (string) $code, $match)) { foreach($match[0] ?? [] as $part) { $ret = $this->executePHPCode($part); $wrap = null; @@ -60,7 +60,7 @@ class CodeRunner $code = str_replace($part, $replace, $code); } } - if(preg_match_all('/\{{([^}]+)\}}/i', $code, $m)) { + if(preg_match_all('/\{{([^}]+)\}}/i', (string) $code, $m)) { foreach($m[1] as $each) { $ret = $this->pipFilter($each); $code = Str::replaceArray('{{' . $each . '}}', [$ret], $code); @@ -80,7 +80,7 @@ class CodeRunner continue; } $type = $node->tag; - $text = trim($node->innertext()); + $text = trim((string) $node->innertext()); if($node->hasChildNodes()) { throw new \Exception('一级标签不允许嵌套'); } @@ -139,7 +139,7 @@ class CodeRunner 'type' => $part_type, 'chart' => (object)$this->getChartOptions($node->getAttribute('chart'), $data), 'col' => $this->getColOption($node->getAttribute('span') ?: $node->getAttribute('col')), - 'show_table' => $node->hasAttribute('show_table') ? $node->getAttribute('show_table') == 'true' : false, + 'show_table' => $node->hasAttribute('show_table') && $node->getAttribute('show_table') == 'true', 'data' => (array)$data, 'tips' => $node->getAttribute('tips') ?: '', 'runtime' => [ @@ -159,9 +159,7 @@ class CodeRunner return [ 'result' => $result, - 'errors' => array_map(function ($item) use ($namespace) { - return Str::replaceArray($namespace . '\\', [''], $item); - }, $errors), + 'errors' => array_map(fn($item) => Str::replaceArray($namespace . '\\', [''], $item), $errors), 'info' => [ 'use_ms' => (int)(($endTime - $startTime) * 1000), ], @@ -174,7 +172,7 @@ class CodeRunner if(!$str) { return []; } - $parts = explode('|', $str); + $parts = explode('|', (string) $str); return array_map(function ($item) { $tokens = preg_split('/[:,]/', $item); @@ -258,9 +256,9 @@ class CodeRunner ]; } if(Str::startsWith($conf, 'LineChart')) { - $token = explode('|', $conf); + $token = explode('|', (string) $conf); array_shift($token); - $field = explode(',', array_shift($token)); + $field = explode(',', (string) array_shift($token)); $x = array_shift($field); $y = $field; @@ -293,9 +291,9 @@ class CodeRunner ]; } if(Str::startsWith($conf, 'ColumnChart')) { - $token = explode('|', $conf); + $token = explode('|', (string) $conf); array_shift($token); - $field = explode(',', array_shift($token)); + $field = explode(',', (string) array_shift($token)); $x = array_shift($field); $y = $field; @@ -326,7 +324,7 @@ class CodeRunner public function pipFilter($str) { - $parts = explode('|', trim($str)); + $parts = explode('|', trim((string) $str)); $first = array_shift($parts); $code = "/msui', $code, $match)) { + if(preg_match('/<\?(?:php|=)(.*)?\?>/msui', (string) $code, $match)) { $code = trim($match[1]); } if($this->namespace) { @@ -142,7 +142,7 @@ class PHPSandbox $this->validatorFunc($call); } - public function filterClass(Class_ $parserClass) + public function filterClass(Class_ $parserClass): never { $class = $parserClass->name->toString(); throw new SandboxException(sprintf('define class [%s] not allowed!', $class)); diff --git a/src/data-focus/src/Util/SimpleHtmlDom.php b/src/data-focus/src/Util/SimpleHtmlDom.php index 9e7049c..77708a1 100644 --- a/src/data-focus/src/Util/SimpleHtmlDom.php +++ b/src/data-focus/src/Util/SimpleHtmlDom.php @@ -74,7 +74,7 @@ function file_get_html($url, $use_include_path = false, $context = null, $offset if($context !== null) { // Test if "Accept-Encoding: gzip" has been set in $context $params = stream_context_get_params($context); - if(isset($params['options']['http']['header']) && preg_match('/gzip/', $params['options']['http']['header']) !== false) { + if(isset($params['options']['http']['header']) && preg_match('/gzip/', (string) $params['options']['http']['header']) !== false) { $contents = file_get_contents('compress.zlib://' . $url, $use_include_path, $context, $offset); } else { $contents = file_get_contents($url, $use_include_path, $context, $offset); @@ -83,11 +83,11 @@ function file_get_html($url, $use_include_path = false, $context = null, $offset $contents = file_get_contents($url, $use_include_path, null, $offset); } // test if the URL doesn't return a 200 status - if(isset($http_response_header) && strpos($http_response_header[0], '200') === false) { + if(!str_contains($http_response_header[0], '200')) { // has a 301 redirect header been sent? $pattern = "/^Location:\s*(.*)$/i"; $location_headers = preg_grep($pattern, $http_response_header); - if(!empty($location_headers) && preg_match($pattern, array_values($location_headers)[0], $matches)) { + if(!empty($location_headers) && preg_match($pattern, (string) array_values($location_headers)[0], $matches)) { // set the URL to that returned via the redirect header and repeat this loop $url = $matches[1]; $repeat = true; @@ -95,7 +95,7 @@ function file_get_html($url, $use_include_path = false, $context = null, $offset } } while($repeat); // stop processing if the header isn't a good responce - if(isset($http_response_header) && strpos($http_response_header[0], '200') === false) { + if(!str_contains($http_response_header[0], '200')) { return false; } // stop processing if the contents are too big @@ -112,7 +112,7 @@ function file_get_html($url, $use_include_path = false, $context = null, $offset function str_get_html($str, $lowercase = true, $forceTagsClosed = true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN = true, $defaultBRText = DEFAULT_BR_TEXT, $defaultSpanText = DEFAULT_SPAN_TEXT) { $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText); - if(empty($str) || strlen($str) > MAX_FILE_SIZE) { + if(empty($str) || strlen((string) $str) > MAX_FILE_SIZE) { $dom->clear(); return false; @@ -135,7 +135,7 @@ function dump_html_tree($node, $show_attr = true, $deep = 0) * * @package PlaceLocalInclude */ -class simple_html_dom_node +class simple_html_dom_node implements \Stringable { public $nodetype = HDOM_TYPE_TEXT; @@ -147,19 +147,16 @@ class simple_html_dom_node public $nodes = []; - public $parent = null; + public $parent; // The "info" array - see HDOM_INFO_... for what each element contains. public $_ = []; public $tag_start = 0; - private $dom = null; - - function __construct($dom) + function __construct(private $dom) { - $this->dom = $dom; - $dom->nodes[] = $this; + $this->dom->nodes[] = $this; } function __destruct() @@ -167,9 +164,9 @@ class simple_html_dom_node $this->clear(); } - function __toString() + function __toString(): string { - return $this->outertext(); + return (string) $this->outertext(); } // clean up memory due to php5 circular references memory leak... @@ -276,11 +273,8 @@ class simple_html_dom_node if($idx === -1) { return $this->children; } - if(isset($this->children[$idx])) { - return $this->children[$idx]; - } - return null; + return $this->children[$idx] ?? null; } // returns the first child of node @@ -441,14 +435,13 @@ class simple_html_dom_node case HDOM_TYPE_TEXT: return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); case HDOM_TYPE_COMMENT: - return ''; case HDOM_TYPE_UNKNOWN: return ''; } - if(strcasecmp($this->tag, 'script') === 0) { + if(strcasecmp((string) $this->tag, 'script') === 0) { return ''; } - if(strcasecmp($this->tag, 'style') === 0) { + if(strcasecmp((string) $this->tag, 'style') === 0) { return ''; } $ret = ''; @@ -472,9 +465,8 @@ class simple_html_dom_node { $ret = $this->innertext(); $ret = str_ireplace('', '', $ret); - return $ret; + return str_replace(']]>', '', $ret); } // build node's text with tag @@ -497,16 +489,11 @@ class simple_html_dom_node if($val === true) { $ret .= $key; } else { - switch($this->_[HDOM_INFO_QUOTE][$i]) { - case HDOM_QUOTE_DOUBLE: - $quote = '"'; - break; - case HDOM_QUOTE_SINGLE: - $quote = '\''; - break; - default: - $quote = ''; - } + $quote = match ($this->_[HDOM_INFO_QUOTE][$i]) { + HDOM_QUOTE_DOUBLE => '"', + HDOM_QUOTE_SINGLE => '\'', + default => '', + }; $ret .= $key . $this->_[HDOM_INFO_SPACE][$i][1] . '=' . $this->_[HDOM_INFO_SPACE][$i][2] . $quote . $val . $quote; } } @@ -564,7 +551,7 @@ class simple_html_dom_node $idx = count($found) + $idx; } - return (isset($found[$idx])) ? $found[$idx] : null; + return $found[$idx] ?? null; } // seek for given conditions @@ -640,7 +627,7 @@ class simple_html_dom_node } //PaperG - If lowercase is set, do a case insensitive test of the value of the selector. if($lowercase) { - $check = $this->match($exp, strtolower($val), strtolower($nodeKeyValue)); + $check = $this->match($exp, strtolower((string) $val), strtolower((string) $nodeKeyValue)); } else { $check = $this->match($exp, $val, $nodeKeyValue); } @@ -648,12 +635,12 @@ class simple_html_dom_node $debugObject->debugLog(2, "after match: " . ($check ? "true" : "false")); } // handle multiple class - if(!$check && strcasecmp($key, 'class') === 0) { - foreach(explode(' ', $node->attr[$key]) as $k) { + if(!$check && strcasecmp((string) $key, 'class') === 0) { + foreach(explode(' ', (string) $node->attr[$key]) as $k) { // Without this, there were cases where leading, trailing, or double spaces lead to our comparing blanks - bad form. if(!empty($k)) { if($lowercase) { - $check = $this->match($exp, strtolower($val), strtolower($k)); + $check = $this->match($exp, strtolower((string) $val), strtolower($k)); } else { $check = $this->match($exp, $val, $k); } @@ -690,15 +677,15 @@ class simple_html_dom_node case '!=': return ($value !== $pattern); case '^=': - return preg_match("/^" . preg_quote($pattern, '/') . "/", $value); + return preg_match("/^" . preg_quote((string) $pattern, '/') . "/", (string) $value); case '$=': - return preg_match("/" . preg_quote($pattern, '/') . "$/", $value); + return preg_match("/" . preg_quote((string) $pattern, '/') . "$/", (string) $value); case '*=': if($pattern[0] == '/') { - return preg_match($pattern, $value); + return preg_match($pattern, (string) $value); } - return preg_match("/" . $pattern . "/i", $value); + return preg_match("/" . $pattern . "/i", (string) $value); } return false; @@ -718,7 +705,7 @@ class simple_html_dom_node // farther study is required to determine of this should be documented or removed. // $pattern = "/([\w-:\*]*)(?:\#([\w-]+)|\.([\w-]+))?(?:\[@?(!?[\w-]+)(?:([!*^$]?=)[\"']?(.*?)[\"']?)?\])?([\/, ]+)/is"; $pattern = "/([\w\-:\*]*)(?:\#([\w\-]+)|\.([\w\-]+))?(?:\[@?(!?[\w\-:]+)(?:([!*^$]?=)[\"']?(.*?)[\"']?)?\])?([\/, ]+)/is"; - preg_match_all($pattern, trim($selector_string) . ' ', $matches, PREG_SET_ORDER); + preg_match_all($pattern, trim((string) $selector_string) . ' ', $matches, PREG_SET_ORDER); if(is_object($debugObject)) { $debugObject->debugLog(2, "Matches Array: ", $matches); } @@ -755,7 +742,7 @@ class simple_html_dom_node // convert to lowercase if($this->dom->lowercase) { $tag = strtolower($tag); - $key = strtolower($key); + $key = strtolower((string) $key); } //elements that do NOT have the specified attribute if(isset($key[0]) && $key[0] === '!') { @@ -780,18 +767,13 @@ class simple_html_dom_node if(isset($this->attr[$name])) { return $this->convert_text($this->attr[$name]); } - switch($name) { - case 'outertext': - return $this->outertext(); - case 'innertext': - return $this->innertext(); - case 'plaintext': - return $this->text(); - case 'xmltext': - return $this->xmltext(); - default: - return array_key_exists($name, $this->attr); - } + return match ($name) { + 'outertext' => $this->outertext(), + 'innertext' => $this->innertext(), + 'plaintext' => $this->text(), + 'xmltext' => $this->xmltext(), + default => array_key_exists($name, $this->attr), + }; } function __set($name, $value) @@ -815,17 +797,13 @@ class simple_html_dom_node function __isset($name) { - switch($name) { - case 'outertext': - return true; - case 'innertext': - return true; - case 'plaintext': - return true; - } - - //no value attr: nowrap, checked selected... - return (array_key_exists($name, $this->attr)) ? true : isset($this->attr[$name]); + return match ($name) { + 'outertext' => true, + 'innertext' => true, + 'plaintext' => true, + //no value attr: nowrap, checked selected... + default => (array_key_exists($name, $this->attr)) ? true : isset($this->attr[$name]), + }; } function __unset($name) @@ -846,27 +824,27 @@ class simple_html_dom_node $sourceCharset = ""; $targetCharset = ""; if($this->dom) { - $sourceCharset = strtoupper($this->dom->_charset); - $targetCharset = strtoupper($this->dom->_target_charset); + $sourceCharset = strtoupper((string) $this->dom->_charset); + $targetCharset = strtoupper((string) $this->dom->_target_charset); } if(is_object($debugObject)) { $debugObject->debugLog(3, "source charset: " . $sourceCharset . " target charaset: " . $targetCharset); } if(!empty($sourceCharset) && !empty($targetCharset) && (strcasecmp($sourceCharset, $targetCharset) != 0)) { // Check if the reported encoding could have been incorrect and the text is actually already UTF-8 - if((strcasecmp($targetCharset, 'UTF-8') == 0) && ($this->is_utf8($text))) { + if((strcasecmp($targetCharset, 'UTF-8') == 0) && (static::is_utf8($text))) { $converted_text = $text; } else { - $converted_text = iconv($sourceCharset, $targetCharset, $text); + $converted_text = iconv($sourceCharset, $targetCharset, (string) $text); } } // Lets make sure that we don't have that silly BOM issue with any of the utf-8 text we output. if($targetCharset == 'UTF-8') { - if(substr($converted_text, 0, 3) == "\xef\xbb\xbf") { - $converted_text = substr($converted_text, 3); + if(str_starts_with((string) $converted_text, "\xef\xbb\xbf")) { + $converted_text = substr((string) $converted_text, 3); } - if(substr($converted_text, -3) == "\xef\xbb\xbf") { - $converted_text = substr($converted_text, 0, -3); + if(str_ends_with((string) $converted_text, "\xef\xbb\xbf")) { + $converted_text = substr((string) $converted_text, 0, -3); } } @@ -885,7 +863,7 @@ class simple_html_dom_node $c = 0; $b = 0; $bits = 0; - $len = strlen($str); + $len = strlen((string) $str); for($i = 0; $i < $len; $i++) { $c = ord($str[$i]); if($c > 128) { @@ -1098,13 +1076,13 @@ class simple_html_dom_node * * @package PlaceLocalInclude */ -class simple_html_dom +class simple_html_dom implements \Stringable { - public $root = null; + public $root; public $nodes = []; - public $callback = null; + public $callback; public $lowercase = false; @@ -1136,8 +1114,6 @@ class simple_html_dom // Note that this is referenced by a child node, and so it needs to be public for that node to see this information. public $_charset = ''; - public $_target_charset = ''; - protected $default_br_text = ""; public $default_span_text = ""; @@ -1180,10 +1156,10 @@ class simple_html_dom 'option' => ['option' => 1], ]; - function __construct($str = null, $lowercase = true, $forceTagsClosed = true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN = true, $defaultBRText = DEFAULT_BR_TEXT, $defaultSpanText = DEFAULT_SPAN_TEXT) + function __construct($str = null, $lowercase = true, $forceTagsClosed = true, public $_target_charset = DEFAULT_TARGET_CHARSET, $stripRN = true, $defaultBRText = DEFAULT_BR_TEXT, $defaultSpanText = DEFAULT_SPAN_TEXT) { if($str) { - if(preg_match("/^http:\/\//i", $str) || is_file($str)) { + if(preg_match("/^http:\/\//i", (string) $str) || is_file($str)) { $this->load_file($str); } else { $this->load($str, $lowercase, $stripRN, $defaultBRText, $defaultSpanText); @@ -1193,7 +1169,6 @@ class simple_html_dom if(!$forceTagsClosed) { $this->optional_closing_array = []; } - $this->_target_charset = $target_charset; } function __destruct() @@ -1316,7 +1291,7 @@ class simple_html_dom { $this->clear(); // set the length of content before we do anything to it. - $this->size = strlen($str); + $this->size = strlen((string) $str); // Save the original size of the html that we got in. It might be useful to someone. $this->original_size = $this->size; //before we save the string as the doc... strip out the \r \n's if we are told to. @@ -1384,7 +1359,7 @@ class simple_html_dom $debugObject->debugLog(2, 'meta content-type tag found' . $fullvalue); } if(!empty($fullvalue)) { - $success = preg_match('/charset=(.+)/', $fullvalue, $matches); + $success = preg_match('/charset=(.+)/', (string) $fullvalue, $matches); if($success) { $charset = $matches[1]; } else { @@ -1447,19 +1422,19 @@ class simple_html_dom $this->skip($this->token_blank); $tag = $this->copy_until_char('>'); // skip attributes in end tag - if(($pos = strpos($tag, ' ')) !== false) { - $tag = substr($tag, 0, $pos); + if(($pos = strpos((string) $tag, ' ')) !== false) { + $tag = substr((string) $tag, 0, $pos); } - $parent_lower = strtolower($this->parent->tag); - $tag_lower = strtolower($tag); + $parent_lower = strtolower((string) $this->parent->tag); + $tag_lower = strtolower((string) $tag); if($parent_lower !== $tag_lower) { if(isset($this->optional_closing_tags[$parent_lower]) && isset($this->block_tags[$tag_lower])) { $this->parent->_[HDOM_INFO_END] = 0; $org_parent = $this->parent; - while(($this->parent->parent) && strtolower($this->parent->tag) !== $tag_lower) { + while(($this->parent->parent) && strtolower((string) $this->parent->tag) !== $tag_lower) { $this->parent = $this->parent->parent; } - if(strtolower($this->parent->tag) !== $tag_lower) { + if(strtolower((string) $this->parent->tag) !== $tag_lower) { $this->parent = $org_parent; // restore origonal parent if($this->parent->parent) { $this->parent = $this->parent->parent; @@ -1471,16 +1446,16 @@ class simple_html_dom } elseif(($this->parent->parent) && isset($this->block_tags[$tag_lower])) { $this->parent->_[HDOM_INFO_END] = 0; $org_parent = $this->parent; - while(($this->parent->parent) && strtolower($this->parent->tag) !== $tag_lower) { + while(($this->parent->parent) && strtolower((string) $this->parent->tag) !== $tag_lower) { $this->parent = $this->parent->parent; } - if(strtolower($this->parent->tag) !== $tag_lower) { + if(strtolower((string) $this->parent->tag) !== $tag_lower) { $this->parent = $org_parent; // restore origonal parent $this->parent->_[HDOM_INFO_END] = $this->cursor; return $this->as_text_node($tag); } - } elseif(($this->parent->parent) && strtolower($this->parent->parent->tag) === $tag_lower) { + } elseif(($this->parent->parent) && strtolower((string) $this->parent->parent->tag) === $tag_lower) { $this->parent->_[HDOM_INFO_END] = 0; $this->parent = $this->parent->parent; } else { @@ -1519,15 +1494,15 @@ class simple_html_dom return true; } // text - if($pos = strpos($tag, '<') !== false) { - $tag = '<' . substr($tag, 0, -1); + if($pos = str_contains((string) $tag, '<')) { + $tag = '<' . substr((string) $tag, 0, -1); $node->_[HDOM_INFO_TEXT] = $tag; $this->link_nodes($node, false); $this->char = $this->doc[--$this->pos]; // prev return true; } - if(!preg_match("/^[\w\-:]+$/", $tag)) { + if(!preg_match("/^[\w\-:]+$/", (string) $tag)) { $node->_[HDOM_INFO_TEXT] = '<' . $tag . $this->copy_until('<>'); if($this->char === '<') { $this->link_nodes($node, false); @@ -1544,11 +1519,11 @@ class simple_html_dom } // begin tag $node->nodetype = HDOM_TYPE_ELEMENT; - $tag_lower = strtolower($tag); + $tag_lower = strtolower((string) $tag); $node->tag = ($this->lowercase) ? $tag_lower : $tag; // handle optional closing tags if(isset($this->optional_closing_tags[$tag_lower])) { - while(isset($this->optional_closing_tags[$tag_lower][strtolower($this->parent->tag)])) { + while(isset($this->optional_closing_tags[$tag_lower][strtolower((string) $this->parent->tag)])) { $this->parent->_[HDOM_INFO_END] = 0; $this->parent = $this->parent->parent; } @@ -1583,7 +1558,7 @@ class simple_html_dom $node->tag = 'text'; $node->attr = []; $node->_[HDOM_INFO_END] = 0; - $node->_[HDOM_INFO_TEXT] = substr($this->doc, $begin_tag_pos, $this->pos - $begin_tag_pos - 1); + $node->_[HDOM_INFO_TEXT] = substr((string) $this->doc, $begin_tag_pos, $this->pos - $begin_tag_pos - 1); $this->pos -= 2; $this->char = (++$this->pos < $this->size) ? $this->doc[$this->pos] : null; // next $this->link_nodes($node, false); @@ -1594,7 +1569,7 @@ class simple_html_dom $space[1] = $this->copy_skip($this->token_blank); $name = $this->restore_noise($name); if($this->lowercase) { - $name = strtolower($name); + $name = strtolower((string) $name); } if($this->char === '=') { $this->char = (++$this->pos < $this->size) ? $this->doc[$this->pos] : null; // next @@ -1621,7 +1596,7 @@ class simple_html_dom $node->_[HDOM_INFO_END] = 0; } else { // reset parent - if(!isset($this->self_closing_tags[strtolower($node->tag)])) { + if(!isset($this->self_closing_tags[strtolower((string) $node->tag)])) { $this->parent = $node; } } @@ -1695,31 +1670,31 @@ class simple_html_dom protected function skip($chars) { - $this->pos += strspn($this->doc, $chars, $this->pos); + $this->pos += strspn((string) $this->doc, (string) $chars, $this->pos); $this->char = ($this->pos < $this->size) ? $this->doc[$this->pos] : null; // next } protected function copy_skip($chars) { $pos = $this->pos; - $len = strspn($this->doc, $chars, $pos); + $len = strspn((string) $this->doc, (string) $chars, $pos); $this->pos += $len; $this->char = ($this->pos < $this->size) ? $this->doc[$this->pos] : null; // next if($len === 0) { return ''; } - return substr($this->doc, $pos, $len); + return substr((string) $this->doc, $pos, $len); } protected function copy_until($chars) { $pos = $this->pos; - $len = strcspn($this->doc, $chars, $pos); + $len = strcspn((string) $this->doc, (string) $chars, $pos); $this->pos += $len; $this->char = ($this->pos < $this->size) ? $this->doc[$this->pos] : null; // next - return substr($this->doc, $pos, $len); + return substr((string) $this->doc, $pos, $len); } protected function copy_until_char($char) @@ -1727,8 +1702,8 @@ class simple_html_dom if($this->char === null) { return ''; } - if(($pos = strpos($this->doc, $char, $this->pos)) === false) { - $ret = substr($this->doc, $this->pos, $this->size - $this->pos); + if(($pos = strpos((string) $this->doc, (string) $char, $this->pos)) === false) { + $ret = substr((string) $this->doc, $this->pos, $this->size - $this->pos); $this->char = null; $this->pos = $this->size; @@ -1741,7 +1716,7 @@ class simple_html_dom $this->char = $this->doc[$pos]; $this->pos = $pos; - return substr($this->doc, $pos_old, $pos - $pos_old); + return substr((string) $this->doc, $pos_old, $pos - $pos_old); } protected function copy_until_char_escape($char) @@ -1751,8 +1726,8 @@ class simple_html_dom } $start = $this->pos; while(1) { - if(($pos = strpos($this->doc, $char, $start)) === false) { - $ret = substr($this->doc, $this->pos, $this->size - $this->pos); + if(($pos = strpos((string) $this->doc, (string) $char, $start)) === false) { + $ret = substr((string) $this->doc, $this->pos, $this->size - $this->pos); $this->char = null; $this->pos = $this->size; @@ -1769,7 +1744,7 @@ class simple_html_dom $this->char = $this->doc[$pos]; $this->pos = $pos; - return substr($this->doc, $pos_old, $pos - $pos_old); + return substr((string) $this->doc, $pos_old, $pos - $pos_old); } } @@ -1781,7 +1756,7 @@ class simple_html_dom if(is_object($debugObject)) { $debugObject->debugLogEntry(1); } - $count = preg_match_all($pattern, $this->doc, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE); + $count = preg_match_all($pattern, (string) $this->doc, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE); for($i = $count - 1; $i > -1; --$i) { $key = '___noise___' . sprintf('% 5d', count($this->noise) + 1000); if(is_object($debugObject)) { @@ -1792,7 +1767,7 @@ class simple_html_dom $this->doc = substr_replace($this->doc, $key, $matches[$i][$idx][1], strlen($matches[$i][$idx][0])); } // reset the length of content - $this->size = strlen($this->doc); + $this->size = strlen((string) $this->doc); if($this->size > 0) { $this->char = $this->doc[0]; } @@ -1805,22 +1780,22 @@ class simple_html_dom if(is_object($debugObject)) { $debugObject->debugLogEntry(1); } - while(($pos = strpos($text, '___noise___')) !== false) { + while(($pos = strpos((string) $text, '___noise___')) !== false) { // Sometimes there is a broken piece of markup, and we don't GET the pos+11 etc... token which indicates a problem outside of us... - if(strlen($text) > $pos + 15) { + if(strlen((string) $text) > $pos + 15) { $key = '___noise___' . $text[$pos + 11] . $text[$pos + 12] . $text[$pos + 13] . $text[$pos + 14] . $text[$pos + 15]; if(is_object($debugObject)) { $debugObject->debugLog(2, 'located key of: ' . $key); } if(isset($this->noise[$key])) { - $text = substr($text, 0, $pos) . $this->noise[$key] . substr($text, $pos + 16); + $text = substr((string) $text, 0, $pos) . $this->noise[$key] . substr((string) $text, $pos + 16); } else { // do this to prevent an infinite loop. - $text = substr($text, 0, $pos) . 'UNDEFINED NOISE FOR KEY: ' . $key . substr($text, $pos + 16); + $text = substr((string) $text, 0, $pos) . 'UNDEFINED NOISE FOR KEY: ' . $key . substr((string) $text, $pos + 16); } } else { // There is no valid key being given back to us... We must get rid of the ___noise___ or we will have a problem. - $text = substr($text, 0, $pos) . 'NO NUMERIC NOISE KEY' . substr($text, $pos + 11); + $text = substr((string) $text, 0, $pos) . 'NO NUMERIC NOISE KEY' . substr((string) $text, $pos + 11); } } @@ -1835,22 +1810,21 @@ class simple_html_dom $debugObject->debugLogEntry(1); } foreach($this->noise as $noiseElement) { - if(strpos($noiseElement, $text) !== false) { + if(str_contains((string) $noiseElement, (string) $text)) { return $noiseElement; } } } - function __toString() + function __toString(): string { - return $this->root->innertext(); + return (string) $this->root->innertext(); } function __get($name) { switch($name) { case 'outertext': - return $this->root->innertext(); case 'innertext': return $this->root->innertext(); case 'plaintext': diff --git a/src/data-focus/src/Util/func.php b/src/data-focus/src/Util/func.php index c9648fb..66efcd0 100644 --- a/src/data-focus/src/Util/func.php +++ b/src/data-focus/src/Util/func.php @@ -36,9 +36,7 @@ function df_db_query($sql, $pool) df_set_context('last_sql', $sql); df_collect('sql_logs', $sql); if (is_array($ret)) { - $ret = array_map(function ($item) { - return (array)$item; - }, $ret); + $ret = array_map(fn($item) => (array)$item, $ret); } return $ret; @@ -89,7 +87,7 @@ function df_json_decode($json, $default = []) if (!$json) { return $default; } - $json = preg_replace('@//[^"]+?$@mui', '', $json); + $json = preg_replace('@//[^"]+?$@mui', '', (string) $json); $json = preg_replace('@^\s*//.*?$@mui', '', $json); $json = $json ? @json_decode($json, true) : $default; if (is_null($json)) { @@ -129,7 +127,7 @@ function df_collected_clear($key) function df_dump(...$arg) { - foreach ($arg as $index => $value) { + foreach ($arg as $value) { $dump = highlight_string("", true); $dump = Str::replaceArray('<?php
', [''], $dump); $dump = Str::replaceArray('?>', [''], $dump); diff --git a/src/dev-tools/src/AbstractMaker.php b/src/dev-tools/src/AbstractMaker.php index d9df885..e65cd55 100644 --- a/src/dev-tools/src/AbstractMaker.php +++ b/src/dev-tools/src/AbstractMaker.php @@ -25,10 +25,7 @@ abstract class AbstractMaker $body = Str::replaceLast('}', '', $body); $body = str::replaceArray(' ', [''], $body); $method = new Method($from->getName()); - $method->setParameters(array_map([ - $this, - 'fromParameterReflection', - ], $from->getParameters())); + $method->setParameters(array_map($this->fromParameterReflection(...), $from->getParameters())); $method->setStatic($from->isStatic()); $isInterface = $from->getDeclaringClass()->isInterface(); $method->setVisibility($from->isPrivate() ? ClassType::VISIBILITY_PRIVATE : ($from->isProtected() ? ClassType::VISIBILITY_PROTECTED : ($isInterface ? null : ClassType::VISIBILITY_PUBLIC))); @@ -63,9 +60,7 @@ abstract class AbstractMaker protected function pathToNamespace(string $path): string { - return implode('\\', array_map(function ($item) { - return ucfirst($item); - }, explode('/', $path))); + return implode('\\', array_map(fn($item) => ucfirst((string) $item), explode('/', $path))); } public function getBaseClass($save_path, $class_namespace, $class_name, $extend_class = null) @@ -73,7 +68,7 @@ abstract class AbstractMaker $namespace = new PhpNamespace($class_namespace); $extend_class && $namespace->addUse($extend_class); if(!file_exists($save_path)) { - $dir = dirname($save_path); + $dir = dirname((string) $save_path); if(!is_dir($dir)) { @mkdir($dir, 0755, true); } @@ -126,8 +121,7 @@ abstract class AbstractMaker $str .= str_repeat(' ', $deep * 4) . "{$k}{$val},\n"; } } - $str .= str_repeat(' ', ($deep - 1) * 4) . "]"; - return $str; + return $str . (str_repeat(' ', ($deep - 1) * 4) . "]"); } } diff --git a/src/dev-tools/src/Controller/DevController.php b/src/dev-tools/src/Controller/DevController.php index 0158b40..8a40c9c 100644 --- a/src/dev-tools/src/Controller/DevController.php +++ b/src/dev-tools/src/Controller/DevController.php @@ -311,17 +311,12 @@ class DevController extends AbstractController public function transType($type) { - switch ($type) { - case 'datetime': - return 'datetime'; - case 'bigint': - return 'number'; - case 'text': - return 'html'; - case 'enum': - return 'radio'; - default: - return 'input'; - } + return match ($type) { + 'datetime' => 'datetime', + 'bigint' => 'number', + 'text' => 'html', + 'enum' => 'radio', + default => 'input', + }; } } diff --git a/src/dev-tools/src/ControllerMaker.php b/src/dev-tools/src/ControllerMaker.php index cfa5622..177dd30 100644 --- a/src/dev-tools/src/ControllerMaker.php +++ b/src/dev-tools/src/ControllerMaker.php @@ -10,7 +10,7 @@ class ControllerMaker extends AbstractMaker { public function make($model_class, $path, $config) { - $model_name = array_last(explode('\\', $model_class)); + $model_name = array_last(explode('\\', (string) $model_class)); $controller_name = $model_name . 'Controller'; $class_namespace = $this->pathToNamespace($path); $save_path = BASE_PATH . '/' . $path . '/' . $controller_name . '.php'; @@ -41,7 +41,7 @@ class ControllerMaker extends AbstractMaker } public function splitToRouteName($greatHumpStr){ - $arr = preg_split('/(?<=[a-z0-9])(?=[A-Z])/x', $greatHumpStr); + $arr = preg_split('/(?<=[a-z0-9])(?=[A-Z])/x', (string) $greatHumpStr); return strtolower(implode("_", $arr)); } diff --git a/src/dev-tools/src/ModelMaker.php b/src/dev-tools/src/ModelMaker.php index 605da19..bfaabe6 100644 --- a/src/dev-tools/src/ModelMaker.php +++ b/src/dev-tools/src/ModelMaker.php @@ -76,31 +76,13 @@ class ModelMaker extends AbstractMaker protected function formatDatabaseType(string $type): ?string { - switch($type) { - case 'tinyint': - case 'smallint': - case 'mediumint': - case 'int': - case 'bigint': - return 'integer'; - case 'decimal': - case 'float': - case 'double': - case 'real': - return 'float'; - case 'bool': - case 'boolean': - return 'boolean'; - case 'varchar': - case 'text': - case 'char': - case 'tinytext': - case 'longtext': - case 'enum': - return 'string'; - default: - return $type; - } + return match ($type) { + 'tinyint', 'smallint', 'mediumint', 'int', 'bigint' => 'integer', + 'decimal', 'float', 'double', 'real' => 'float', + 'bool', 'boolean' => 'boolean', + 'varchar', 'text', 'char', 'tinytext', 'longtext', 'enum' => 'string', + default => $type, + }; } protected function formatPropertyType(string $type, ?string $cast): ?string @@ -108,23 +90,16 @@ class ModelMaker extends AbstractMaker if(!isset($cast)) { $cast = $this->formatDatabaseType($type) ?? 'string'; } - switch($cast) { - case 'integer': - return 'int'; - case 'date': - case 'datetime': - return '\Carbon\Carbon'; - case 'json': - return 'array'; - } - - return $cast; + return match ($cast) { + 'integer' => 'int', + 'date', 'datetime' => \Carbon\Carbon::class, + 'json' => 'array', + default => $cast, + }; } protected function formatColumns(array $columns): array { - return array_map(function ($item) { - return array_change_key_case($item, CASE_LOWER); - }, $columns); + return array_map(fn($item) => array_change_key_case($item, CASE_LOWER), $columns); } } diff --git a/src/event-bus/src/BootProcessListener.php b/src/event-bus/src/BootProcessListener.php index e956e9e..7a635c7 100644 --- a/src/event-bus/src/BootProcessListener.php +++ b/src/event-bus/src/BootProcessListener.php @@ -12,20 +12,8 @@ use Psr\Container\ContainerInterface; class BootProcessListener implements ListenerInterface { - /** - * @var ContainerInterface - */ - private $container; - - /** - * @var ConfigInterface - */ - private $config; - - public function __construct(ContainerInterface $container, ConfigInterface $config) + public function __construct(private readonly ConfigInterface $config) { - $this->container = $container; - $this->config = $config; } /** diff --git a/src/event-bus/src/Controller/PushController.php b/src/event-bus/src/Controller/PushController.php index f5bb244..d1a84fa 100644 --- a/src/event-bus/src/Controller/PushController.php +++ b/src/event-bus/src/Controller/PushController.php @@ -32,7 +32,6 @@ class PushController extends AbstractController break; default: return $this->fail(ErrorCode::CODE_ERR_SYSTEM, 'not support queue type'); - break; } return $ret ? $this->success() : $this->fail(ErrorCode::CODE_ERR_SYSTEM, 'push message faile'); diff --git a/src/event-bus/src/Kafka.php b/src/event-bus/src/Kafka.php index 72ee03e..3b2e1a3 100644 --- a/src/event-bus/src/Kafka.php +++ b/src/event-bus/src/Kafka.php @@ -18,18 +18,11 @@ class Kafka // Set a rebalance callback to log partition assignments (optional) $conf->setRebalanceCb(function (KafkaConsumer $kafka, $err, array $partitions = null) { - switch($err) { - case RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS: - $kafka->assign($partitions); - break; - - case RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS: - $kafka->assign(null); - break; - - default: - throw new \Exception($err); - } + match ($err) { + RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS => $kafka->assign($partitions), + RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS => $kafka->assign(null), + default => throw new \Exception($err), + }; }); // Configure the group.id. All consumer with the same group.id will consume @@ -64,14 +57,11 @@ class Kafka $handler($message->payload); break; case RD_KAFKA_RESP_ERR__PARTITION_EOF: - // "No more messages; will wait for more\n"; - break; case RD_KAFKA_RESP_ERR__TIMED_OUT: // "Timed out\n"; break; default: throw new \Exception($message->errstr(), $message->err); - break; } } } diff --git a/src/event-bus/src/OnPipeMessageListener.php b/src/event-bus/src/OnPipeMessageListener.php index 30538b8..b3989ea 100644 --- a/src/event-bus/src/OnPipeMessageListener.php +++ b/src/event-bus/src/OnPipeMessageListener.php @@ -31,7 +31,7 @@ class OnPipeMessageListener implements ListenerInterface if(Str::startsWith($msg['callback'], ['http://', 'https://'])) { $guzzle = $container->get(ClientFactory::class)->create(); $response = $guzzle->request('GET', $msg['callback']); - $ret = json_decode($response->getBody()->getContents()); + $ret = json_decode((string) $response->getBody()->getContents()); } elseif(preg_match('/([\w+\\\\]+)@(\w+)/', $msg['callback'], $m)) { $ret = call([make($m[1]), $m[2]], [$msg['arg']]); } elseif(preg_match('/([\w+\\\\]+)::(\w+)/', $msg['callback'], $m)) { diff --git a/src/event-bus/src/ProcessFactory.php b/src/event-bus/src/ProcessFactory.php index 66d081f..482ae5e 100644 --- a/src/event-bus/src/ProcessFactory.php +++ b/src/event-bus/src/ProcessFactory.php @@ -22,16 +22,11 @@ class ProcessFactory $this->serve = $serve; $this->deliver_type = $params['deliver_type'] ?? 'single'; $this->callback = $params['callback']; - switch($params['type']) { - case 'amqp': - return $this->makeAmqpProcess($params['options']); - break; - case 'kafka': - return $this->makeKafkaProcess($params['options']); - break; - default: - return false; - } + return match ($params['type']) { + 'amqp' => $this->makeAmqpProcess($params['options']), + 'kafka' => $this->makeKafkaProcess($params['options']), + default => false, + }; } public function makeAmqpProcess($options) @@ -39,16 +34,13 @@ class ProcessFactory $factory = $this; $nums = $options['nums'] ?? 1; $message = new class ($options, $factory) extends ConsumerMessage { - public $factory; - - public function __construct($options, $factory) + public function __construct($options, public $factory) { foreach($options as $key => $val) { if(property_exists($this, $key)) { $this->$key = $val; } } - $this->factory = $factory; } public function consume($data): string @@ -101,16 +93,13 @@ class ProcessFactory public $instance; - public $factory; - - public function __construct($options, $factory) + public function __construct($options, public $factory) { $container = ApplicationContext::getContainer(); $this->instance = $options['instance']; $this->topic = $options['topic']; $this->group = $options['group']; $this->name = 'event_bus:kafka_' . $this->group . '_' . $this->topic; - $this->factory = $factory; $this->nums = $options['nums'] ?? 1; parent::__construct($container); } diff --git a/src/process-manager/src/AmqpConsumerManager.php b/src/process-manager/src/AmqpConsumerManager.php index bca8cac..f5f9bd0 100644 --- a/src/process-manager/src/AmqpConsumerManager.php +++ b/src/process-manager/src/AmqpConsumerManager.php @@ -12,24 +12,14 @@ use Psr\Container\ContainerInterface; class AmqpConsumerManager { - /** - * @var ContainerInterface - */ - private $container; - - public function __construct(ContainerInterface $container) + public function __construct(private readonly ContainerInterface $container) { - $this->container = $container; } public function run() { $classes = AnnotationCollector::getClassByAnnotation(ConsumerAnnotation::class); $consumer_names = process_list_filter(array_keys($classes), config('process_manager.amqp_consumer', [])); - /** - * @var string - * @var ConsumerAnnotation $annotation - */ foreach($classes as $class => $annotation) { if(!in_array($class, $consumer_names)) { continue; @@ -59,16 +49,10 @@ class AmqpConsumerManager */ private $consumer; - /** - * @var ConsumerMessageInterface - */ - private $consumerMessage; - - public function __construct(ContainerInterface $container, ConsumerMessageInterface $consumerMessage) + public function __construct(ContainerInterface $container, private readonly ConsumerMessageInterface $consumerMessage) { parent::__construct($container); $this->consumer = $container->get(Consumer::class); - $this->consumerMessage = $consumerMessage; } public function handle(): void diff --git a/src/process-manager/src/BootProcessListener.php b/src/process-manager/src/BootProcessListener.php index 0598e0f..26eba2c 100644 --- a/src/process-manager/src/BootProcessListener.php +++ b/src/process-manager/src/BootProcessListener.php @@ -13,20 +13,8 @@ use Psr\Container\ContainerInterface; class BootProcessListener implements ListenerInterface { - /** - * @var ContainerInterface - */ - private $container; - - /** - * @var ConfigInterface - */ - private $config; - - public function __construct(ContainerInterface $container, ConfigInterface $config) + public function __construct(private readonly ContainerInterface $container, private readonly ConfigInterface $config) { - $this->container = $container; - $this->config = $config; } /** diff --git a/src/process-manager/src/NsqConsumerManager.php b/src/process-manager/src/NsqConsumerManager.php index bd041d6..1c6e6ca 100644 --- a/src/process-manager/src/NsqConsumerManager.php +++ b/src/process-manager/src/NsqConsumerManager.php @@ -20,24 +20,14 @@ use Psr\EventDispatcher\EventDispatcherInterface; class NsqConsumerManager { - /** - * @var ContainerInterface - */ - private $container; - - public function __construct(ContainerInterface $container) + public function __construct(private readonly ContainerInterface $container) { - $this->container = $container; } public function run() { $classes = AnnotationCollector::getClassByAnnotation(ConsumerAnnotation::class); $consumer_names = process_list_filter(array_keys($classes), config('process_manager.nsq_consumer', [])); - /** - * @var string - * @var ConsumerAnnotation $annotation - */ foreach($classes as $class => $annotation) { if(!in_array($class, $consumer_names)) { continue; @@ -61,11 +51,6 @@ class NsqConsumerManager private function createProcess(AbstractConsumer $consumer): AbstractProcess { return new class($this->container, $consumer) extends AbstractProcess { - /** - * @var AbstractConsumer - */ - private $consumer; - /** * @var \Hyperf\Nsq\Nsq */ @@ -81,14 +66,13 @@ class NsqConsumerManager */ private $config; - public function __construct(ContainerInterface $container, AbstractConsumer $consumer) + public function __construct(ContainerInterface $container, private readonly AbstractConsumer $consumer) { parent::__construct($container); - $this->consumer = $consumer; $this->config = $container->get(ConfigInterface::class); $this->subscriber = make(Nsq::class, [ 'container' => $container, - 'pool' => $consumer->getPool(), + 'pool' => $this->consumer->getPool(), ]); if($container->has(EventDispatcherInterface::class)) { $this->dispatcher = $container->get(EventDispatcherInterface::class); diff --git a/src/rule-engine/src/ArrayHelper.php b/src/rule-engine/src/ArrayHelper.php index 6076eaf..57ff730 100644 --- a/src/rule-engine/src/ArrayHelper.php +++ b/src/rule-engine/src/ArrayHelper.php @@ -61,7 +61,7 @@ class ArrayHelper if($current === null) { return false; } - $keys = explode('.', $key); + $keys = explode('.', (string) $key); $target = &$arr; $unset_key = array_pop($keys); while($item = array_shift($keys)) { diff --git a/src/rule-engine/src/BooleanOperation.php b/src/rule-engine/src/BooleanOperation.php index cff1216..1c41125 100644 --- a/src/rule-engine/src/BooleanOperation.php +++ b/src/rule-engine/src/BooleanOperation.php @@ -3,15 +3,12 @@ namespace HyperfAdmin\RuleEngine; class BooleanOperation { - protected $data = []; - protected $sets = []; protected $info = []; - public function __construct($data = []) + public function __construct(protected $data = []) { - $this->data = $data; } public function setContext($data) @@ -122,8 +119,8 @@ class BooleanOperation case 'between': $rule = $this->toArr($rule_val); if($this->isDateStr($rule[0])) { - $rule[0] = strtotime($rule[0]); - $rule[1] = strtotime($rule[1]); + $rule[0] = strtotime((string) $rule[0]); + $rule[1] = strtotime((string) $rule[1]); } return $current_val > $rule[0] && $current_val < $rule[1]; @@ -136,7 +133,7 @@ class BooleanOperation case 'elapse between': $rule = $this->toArr($rule_val); if($this->isDateStr($rule[0])) { - return (time() - $rule_val) > strtotime($rule[0]) && (time() - $rule_val) < strtotime($rule[1]); + return (time() - $rule_val) > strtotime((string) $rule[0]) && (time() - $rule_val) < strtotime((string) $rule[1]); } return (time() - $rule_val) > $rule[0] && (time() - $rule_val) < $rule[1]; @@ -154,11 +151,11 @@ class BooleanOperation if(is_array($val)) { return $val; } - if(strpos($val, ',')) { - return explode(',', $val); + if(strpos((string) $val, ',')) { + return explode(',', (string) $val); } - if(strpos($val, '...')) { - $parts = explode('...', $val); + if(strpos((string) $val, '...')) { + $parts = explode('...', (string) $val); return range($parts[0], $parts[1]); } @@ -168,7 +165,7 @@ class BooleanOperation protected function isDateStr($var) { - return preg_match('/[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]/', $var); + return preg_match('/[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]/', (string) $var); } protected function assignment($key, $operator, $right) diff --git a/src/rule-engine/src/Context/Context.php b/src/rule-engine/src/Context/Context.php index a6086ca..3a98f48 100644 --- a/src/rule-engine/src/Context/Context.php +++ b/src/rule-engine/src/Context/Context.php @@ -34,7 +34,7 @@ class Context implements \ArrayAccess if(isset($this->custom_data[$offset])) { return $this->custom_data[$offset]; } - preg_match('/^([a-zA-Z._0-9]+)\((.*)\)$/', $offset, $m); + preg_match('/^([a-zA-Z._0-9]+)\((.*)\)$/', (string) $offset, $m); $param = ''; if($m) { $offset = $m[1]; @@ -53,12 +53,12 @@ class Context implements \ArrayAccess } $param = str_replace('.', "\001", $param); if(isset($this->key_map[$offset])) { - [$plugin_name, $key] = explode('.', $offset, 2); + [$plugin_name, $key] = explode('.', (string) $offset, 2); return ArrayHelper::array_get($param ? "{$key}({$param})" : $key, $this->plugins[$plugin_name]); } foreach($this->plugins as $plugin) { - $key = explode('.', $offset, 2)[0]; + $key = explode('.', (string) $offset, 2)[0]; if(in_array($key, $plugin->keys())) { return ArrayHelper::array_get($param ? "{$offset}($param)" : $offset, $plugin); } @@ -72,7 +72,7 @@ class Context implements \ArrayAccess if(isset($this->custom_data[$offset])) { return true; } - preg_match('/^([a-zA-Z._0-9]+)\((.*)\)$/', $offset, $m); + preg_match('/^([a-zA-Z._0-9]+)\((.*)\)$/', (string) $offset, $m); if($m) { $offset = $m[1]; } @@ -80,7 +80,7 @@ class Context implements \ArrayAccess return true; } foreach($this->plugins as $plugin) { - $key = explode('.', $offset, 2)[0]; + $key = explode('.', (string) $offset, 2)[0]; if(in_array($key, $plugin->keys())) { return true; } diff --git a/src/rule-engine/src/Context/ContextPluginAbstract.php b/src/rule-engine/src/Context/ContextPluginAbstract.php index 5aca872..04f833b 100644 --- a/src/rule-engine/src/Context/ContextPluginAbstract.php +++ b/src/rule-engine/src/Context/ContextPluginAbstract.php @@ -14,13 +14,13 @@ abstract class ContextPluginAbstract implements ContextPluginInterface, \ArrayAc $methods = $ref->getMethods(); $keys = []; foreach($methods as $method) { - if(strpos($method->name, 'get') === 0) { + if(str_starts_with($method->name, 'get')) { $keys[] = $this->camel2snake(str_replace('get', '', $method->name)); } } return $keys; - } catch (\ReflectionException $e) { + } catch (\ReflectionException) { return []; } } @@ -37,7 +37,7 @@ abstract class ContextPluginAbstract implements ContextPluginInterface, \ArrayAc public function camel2snake($str) { - preg_match_all('!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!', $str, $matches); + preg_match_all('!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!', (string) $str, $matches); $ret = $matches[0]; foreach($ret as &$match) { $match = $match == strtoupper($match) ? strtolower($match) : lcfirst($match); diff --git a/src/rule-engine/src/Context/IpContext.php b/src/rule-engine/src/Context/IpContext.php index def745d..d967cf3 100644 --- a/src/rule-engine/src/Context/IpContext.php +++ b/src/rule-engine/src/Context/IpContext.php @@ -23,7 +23,7 @@ class IpContext extends ContextPluginAbstract try { $region = $this->ip2Region->memorySearch($ip); // 国家|区域|省份|城市|ISP - $region = explode('|', $region['region']); + $region = explode('|', (string) $region['region']); return [ 'country' => $region[0], @@ -32,7 +32,7 @@ class IpContext extends ContextPluginAbstract 'city' => $region[3], 'isp' => $region[4], ]; - } catch (\Exception $exception) { + } catch (\Exception) { return false; } } diff --git a/src/validation/src/Validation.php b/src/validation/src/Validation.php index 91e0226..c1688f1 100644 --- a/src/validation/src/Validation.php +++ b/src/validation/src/Validation.php @@ -22,7 +22,7 @@ class Validation public function check($rules, $data, $obj = null, $options = []) { foreach($data as $key => $val) { - if(strpos($key, '.') !== false) { + if(str_contains((string) $key, '.')) { Arr::set($data, $key, $val); unset($data[$key]); } @@ -32,14 +32,14 @@ class Validation $white_data = []; foreach($rules as $key => $rule) { - $field_extra = explode('|', $key); + $field_extra = explode('|', (string) $key); $field = $field_extra[0]; if(!$rule && Arr::get($data, $field)) { $white_data[$field] = Arr::get($data, $field); continue; } $title = $field_extra[1] ?? $field_extra[0]; - $rules = is_array($rule) ? $rule : explode('|', $rule); + $rules = is_array($rule) ? $rule : explode('|', (string) $rule); foreach($rules as $index => &$item) { if($index === 'children') { $request_sub_data = Arr::get($data, $field); @@ -101,17 +101,17 @@ class Validation } $map = array_sort_by_key_length($map); $filed_keys = array_map(function ($key) { - if(strpos($key, '.') === false) { + if(!str_contains((string) $key, '.')) { return str_replace('_', ' ', $key); } return $key; }, $filed_keys); - if(preg_match('/.*当 (.*) 是 (.*)/', $item, $m)) { + if(preg_match('/.*当 (.*) 是 (.*)/', (string) $item, $m)) { if(isset($m[1]) && isset($m[2])) { $field = str_replace(' ', '_', $m[1]); $option = $options[$field][$m[2]]; - $item = preg_replace('/是 .*/', '是 ' . $option, $item); + $item = preg_replace('/是 .*/', '是 ' . $option, (string) $item); } } @@ -133,9 +133,7 @@ class Validation Arr::set($real_data, $key, $val); } - $real_data = array_map_recursive(function ($item) { - return is_string($item) ? trim($item) : $item; - }, $real_data); + $real_data = array_map_recursive(fn($item) => is_string($item) ? trim($item) : $item, $real_data); return [ $fails ? null : $real_data, @@ -146,26 +144,20 @@ class Validation public function makeCustomRule($custom_rule) { return new class ($custom_rule, $this) implements Rule { - public $custom_rule; - - public $validation; - public $error = "%s "; public $attribute; - public function __construct($custom_rule, $validation) + public function __construct(public $custom_rule, public $validation) { - $this->custom_rule = $custom_rule; - $this->validation = $validation; } public function passes($attribute, $value): bool { $this->attribute = $attribute; $rule = $this->custom_rule; - if(strpos($rule, ':') !== false) { - $rule = explode(':', $rule)[0]; + if(str_contains((string) $rule, ':')) { + $rule = explode(':', (string) $rule)[0]; $extra = explode(',', explode(':', $rule)[1]); $ret = $this->validation->$rule($attribute, $value, $extra); if(is_string($ret)) { @@ -196,29 +188,20 @@ class Validation public function makeObjectCallback($method, $object) { return new class ($method, $this, $object) implements Rule { - public $custom_rule; - - public $validation; - - public $object; - public $error = "%s "; public $attribute; - public function __construct($custom_rule, $validation, $object) + public function __construct(public $custom_rule, public $validation, public $object) { - $this->custom_rule = $custom_rule; - $this->validation = $validation; - $this->object = $object; } public function passes($attribute, $value): bool { $this->attribute = $attribute; $rule = $this->custom_rule; - if(strpos($rule, ':') !== false) { - $rule = explode(':', $rule)[0]; + if(str_contains((string) $rule, ':')) { + $rule = explode(':', (string) $rule)[0]; $extra = explode(',', explode(':', $rule)[1]); $ret = $this->object->$rule($attribute, $value, $extra); if(is_string($ret)) { diff --git a/src/validation/src/ValidationCustomRule.php b/src/validation/src/ValidationCustomRule.php index 76e11a5..fa23c1a 100644 --- a/src/validation/src/ValidationCustomRule.php +++ b/src/validation/src/ValidationCustomRule.php @@ -16,8 +16,8 @@ trait ValidationCustomRule public function crontab($attribute, $value) { - if(!preg_match('/^((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)$/i', trim($value))) { - if(!preg_match('/^((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)$/i', trim($value))) { + if(!preg_match('/^((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)$/i', trim((string) $value))) { + if(!preg_match('/^((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)\s+((\*(\/[0-9]+)?)|[0-9\-\,\/]+)$/i', trim((string) $value))) { return '不是合法的crontab配置'; } } @@ -36,7 +36,7 @@ trait ValidationCustomRule public function number_concat_ws_comma($attribute, $value) { - if(!preg_match("/^\d+(,\d+)*$/", $value)) { + if(!preg_match("/^\d+(,\d+)*$/", (string) $value)) { return "不是英文逗号分隔的字符串"; }