mirror of
http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore.git
synced 2026-01-15 05:35:09 +08:00
Compare commits
23 Commits
v1.0.0-alp
...
v1.0.0-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eeab8a258d | ||
|
|
bac22a8ea6 | ||
|
|
44c26b6491 | ||
|
|
f422fb6b31 | ||
|
|
762acbb368 | ||
|
|
2167fd209a | ||
|
|
fc9b41ef78 | ||
|
|
da518799b3 | ||
|
|
4d8a918898 | ||
|
|
cfbb770559 | ||
|
|
01aa833537 | ||
|
|
c02a08ca6b | ||
|
|
a84b812dd0 | ||
|
|
6eacde9970 | ||
|
|
7d6dc7fe9f | ||
|
|
97131d224c | ||
|
|
08d00a785f | ||
|
|
16f69c193c | ||
|
|
b89b218eaa | ||
|
|
14d28deee2 | ||
|
|
cbc59ccf74 | ||
|
|
f34b2c9e21 | ||
|
|
eee68cab8a |
30
.idea/HDK-Core.iml
generated
30
.idea/HDK-Core.iml
generated
@@ -4,6 +4,7 @@
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="Singularity\HDK\Core\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Singularity\HDK\Test\Core\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/runtime" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/adbario/php-dot-notation" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/alibabacloud/credentials" />
|
||||
@@ -16,7 +17,6 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/alibabacloud/tea-utils" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/alibabacloud/tea-xml" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/cooper/hyperf-pest" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/deprecations" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/inflector" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
|
||||
@@ -121,7 +121,6 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-enumerator" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-reflector" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/recursion-context" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/resource-operations" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/type" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/version" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/seld/jsonlint" />
|
||||
@@ -160,6 +159,33 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/teapot/status-code" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/vlucas/phpdotenv" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/brianium/paratest" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/fidry/cpu-core-counter" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofhyperf/pest-plugin-hyperf" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofhyperf/rector" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/stdlib" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/testing" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/jean85/pretty-package-versions" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nunomaduro/termwind" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/pestphp/pest-plugin-arch" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/rector/rector" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/swow/psr7-plus" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ta-tikoma/phpunit-architecture-test" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/carbonphp/carbon-doctrine-types" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php82" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/clue/ndjson-react" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/evenement/evenement" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/cache" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/child-process" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/dns" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/event-loop" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/socket" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/react/stream" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
|
||||
24
.idea/php-docker-settings.xml
generated
Normal file
24
.idea/php-docker-settings.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PhpDockerContainerSettings">
|
||||
<list>
|
||||
<map>
|
||||
<entry key="9fb85f67-19fd-423f-9358-1b155a12eb7d">
|
||||
<value>
|
||||
<DockerContainerSettings>
|
||||
<option name="version" value="1" />
|
||||
<option name="volumeBindings">
|
||||
<list>
|
||||
<DockerVolumeBindingImpl>
|
||||
<option name="containerPath" value="/srv/www" />
|
||||
<option name="hostPath" value="$PROJECT_DIR$" />
|
||||
</DockerVolumeBindingImpl>
|
||||
</list>
|
||||
</option>
|
||||
</DockerContainerSettings>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</list>
|
||||
</component>
|
||||
</project>
|
||||
46
.idea/php.xml
generated
46
.idea/php.xml
generated
@@ -34,9 +34,7 @@
|
||||
<path value="$PROJECT_DIR$/vendor/jetbrains/phpstorm-attributes" />
|
||||
<path value="$PROJECT_DIR$/vendor/php-di/phpdoc-reader" />
|
||||
<path value="$PROJECT_DIR$/vendor/lizhichao/one-sm" />
|
||||
<path value="$PROJECT_DIR$/vendor/spatie/test-time" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpoption/phpoption" />
|
||||
<path value="$PROJECT_DIR$/vendor/spatie/pest-plugin-test-time" />
|
||||
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
||||
<path value="$PROJECT_DIR$/vendor/swoole/ide-helper" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
||||
@@ -58,9 +56,7 @@
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
|
||||
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/type" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest-plugin" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
|
||||
@@ -69,7 +65,6 @@
|
||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpstan" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
|
||||
@@ -77,7 +72,6 @@
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
|
||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/collision" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/tea-xml" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php73" />
|
||||
@@ -131,7 +125,6 @@
|
||||
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/clock" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
||||
<path value="$PROJECT_DIR$/vendor/filp/whoops" />
|
||||
<path value="$PROJECT_DIR$/vendor/seld/phar-utils" />
|
||||
<path value="$PROJECT_DIR$/vendor/seld/jsonlint" />
|
||||
<path value="$PROJECT_DIR$/vendor/seld/signal-handler" />
|
||||
@@ -139,7 +132,6 @@
|
||||
<path value="$PROJECT_DIR$/vendor/nikic/fast-route" />
|
||||
<path value="$PROJECT_DIR$/vendor/react/promise" />
|
||||
<path value="$PROJECT_DIR$/vendor/roave/dont" />
|
||||
<path value="$PROJECT_DIR$/vendor/cooper/hyperf-pest" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/database" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/pipeline" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/contract" />
|
||||
@@ -175,12 +167,50 @@
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/engine" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/stringable" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
|
||||
<path value="$PROJECT_DIR$/vendor/swow/psr7-plus" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/stdlib" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/testing" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest-plugin" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest-plugin-arch" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
||||
<path value="$PROJECT_DIR$/vendor/brianium/paratest" />
|
||||
<path value="$PROJECT_DIR$/vendor/fidry/cpu-core-counter" />
|
||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/termwind" />
|
||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/collision" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||
<path value="$PROJECT_DIR$/vendor/filp/whoops" />
|
||||
<path value="$PROJECT_DIR$/vendor/ta-tikoma/phpunit-architecture-test" />
|
||||
<path value="$PROJECT_DIR$/vendor/jean85/pretty-package-versions" />
|
||||
<path value="$PROJECT_DIR$/vendor/friendsofhyperf/pest-plugin-hyperf" />
|
||||
<path value="$PROJECT_DIR$/vendor/rector/rector" />
|
||||
<path value="$PROJECT_DIR$/vendor/friendsofhyperf/rector" />
|
||||
<path value="$PROJECT_DIR$/vendor/spatie/test-time" />
|
||||
<path value="$PROJECT_DIR$/vendor/spatie/pest-plugin-test-time" />
|
||||
<path value="$PROJECT_DIR$/vendor/carbonphp/carbon-doctrine-types" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php82" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
|
||||
<path value="$PROJECT_DIR$/vendor/facade/ignition-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/cooper/hyperf-pest" />
|
||||
<path value="$PROJECT_DIR$/vendor/clue/ndjson-react" />
|
||||
<path value="$PROJECT_DIR$/vendor/evenement/evenement" />
|
||||
<path value="$PROJECT_DIR$/vendor/react/child-process" />
|
||||
<path value="$PROJECT_DIR$/vendor/react/cache" />
|
||||
<path value="$PROJECT_DIR$/vendor/react/dns" />
|
||||
<path value="$PROJECT_DIR$/vendor/react/stream" />
|
||||
<path value="$PROJECT_DIR$/vendor/react/event-loop" />
|
||||
<path value="$PROJECT_DIR$/vendor/react/socket" />
|
||||
</include_path>
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
|
||||
<component name="PhpStan">
|
||||
<PhpStan_settings>
|
||||
<PhpStanConfiguration tool_path="$PROJECT_DIR$/vendor/bin/phpstan" />
|
||||
<PhpStanConfiguration tool_path="$PROJECT_DIR$/vendor/bin/phpstan" />
|
||||
<PhpStanConfiguration tool_path="$PROJECT_DIR$/vendor/bin/phpstan" />
|
||||
</PhpStan_settings>
|
||||
</component>
|
||||
<component name="PhpStanOptionsConfiguration">
|
||||
|
||||
21
.idea/phpspec.xml
generated
21
.idea/phpspec.xml
generated
@@ -29,6 +29,27 @@
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
</suites>
|
||||
</component>
|
||||
</project>
|
||||
87
CHANGELOG.md
87
CHANGELOG.md
@@ -1,4 +1,91 @@
|
||||
# 版本更新日志
|
||||
## [1.0.0-beta.3](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2024-05-17)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **i18n:** 在没有配置项目默认语言,且传入意料之外的语言时,默认为英文 ([44c26b6](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/44c26b64918702062f28499d566eaa54d8aff491))
|
||||
|
||||
|
||||
### 📦 Build System | 打包构建
|
||||
|
||||
* **composer:** 更新依赖 ([bac22a8](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/bac22a8ea683c42f597e070e1395881b46b2bd83))
|
||||
|
||||
## [1.0.0-beta.2](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2024-01-18)
|
||||
|
||||
|
||||
### ⚡ Performance Improvements | 性能优化
|
||||
|
||||
* **exception:** 取消了必须是 apifox/postman 的设计 ([2167fd2](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/2167fd209a3cc46ea77fc64909ff8adf71ec6ef0))
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **CoreMiddleware:** 修复如果直接输出 ResponseInterface 实例会报错的问题 ([762acbb](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/762acbb368d6a901478fe3d6b2a3e30793f2c57c))
|
||||
|
||||
## [1.0.0-beta.1](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-beta.0...v1.0.0-beta.1) (2023-12-15)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **bin:** 更新了迁移脚本的目录 ([da51879](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/da518799b3b4301302217af1faa452adbcacf02b))
|
||||
|
||||
## [1.0.0-beta.0](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.19...v1.0.0-beta.0) (2023-12-15)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **bin:** 更新了迁移脚本的目录 ([01aa833](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/01aa8335371fce4f7663eb1c16e4ef7f108e2bc5))
|
||||
|
||||
|
||||
### 📦 Build System | 打包构建
|
||||
|
||||
* **release:** 将版本号改为 beta ([cfbb770](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/cfbb770559e748c77d52e7d913398b1d2a1d8edd))
|
||||
|
||||
## [1.0.0-alpha.19](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.18...v1.0.0-alpha.19) (2023-12-15)
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **bin:** 增加了迁移到最新版本的脚本 ([a84b812](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/a84b812dd0577186379e2df19493cb0fcf9b4fd9))
|
||||
|
||||
## [1.0.0-alpha.18](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.17...v1.0.0-alpha.18) (2023-12-14)
|
||||
|
||||
|
||||
### 📦 Build System | 打包构建
|
||||
|
||||
* **composer:** 清理 composer 配置 ([08d00a7](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/08d00a785f3be1846333777edae94e0ae237c8a2))
|
||||
|
||||
|
||||
### ♻️ Code Refactoring | 代码重构
|
||||
|
||||
* 迁移到 hyperf3.1 的写法 ([97131d2](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/97131d224cfb601ba075ff1af1c4ca333680b459))
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **bin:** 增加了迁移到最新版本的脚本 ([7d6dc7f](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/7d6dc7fe9f9bc637755768852518420e98176d56))
|
||||
|
||||
## [1.0.0-alpha.17](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.16...v1.0.0-alpha.17) (2023-12-14)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **CoreMiddleware:** 修复参数类型过少的问题 ([14d28de](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/14d28deee2ec97991b7effe99a37cc03b19a291c))
|
||||
|
||||
|
||||
### 📦 Build System | 打包构建
|
||||
|
||||
* **composer:** 更新依赖,增加 php8.2/8.3的 polyfill ([b89b218](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/b89b218eaa211d0262e2f1dff4d61f2a79eacda6))
|
||||
* **ide:** 增加了docker 映射 ([cbc59cc](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/cbc59ccf74dafcedca1e4369e647ba1c003efe39))
|
||||
|
||||
## [1.0.0-alpha.16](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.15...v1.0.0-alpha.16) (2023-12-04)
|
||||
|
||||
|
||||
### ♻️ Code Refactoring | 代码重构
|
||||
|
||||
* 迁移到 hyperf3.1和 pestphp2 ([eee68ca](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/eee68cab8a06833114ae19dc2c746dcd50206cb4))
|
||||
|
||||
## [1.0.0-alpha.15](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.14...v1.0.0-alpha.15) (2023-10-30)
|
||||
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.0.0-alpha.15
|
||||
1.0.0-beta.3
|
||||
19
bin/hdk-migrate-core.sh
Normal file
19
bin/hdk-migrate-core.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
# shellcheck disable=SC2039
|
||||
|
||||
LIB_HOME_DIR="$(pwd)/vendor/singularity/hdk-core"
|
||||
LATEST_VERSION=$(cat "${LIB_HOME_DIR}/VERSION_TRACKER.txt")
|
||||
|
||||
echo -e '\033[44;34;5m=============================\033[0m'
|
||||
echo ''
|
||||
|
||||
$(pwd)/vendor/bin/rector \
|
||||
process \
|
||||
--autoload-file=vendor/autoload.php \
|
||||
--config="${LIB_HOME_DIR}/hyperf31_rector.php"
|
||||
|
||||
echo ''
|
||||
echo -e '\033[44;34;5m=============================\033[0m'
|
||||
echo -e '\033[;31;1m🎉Congratulations!\033[0m'
|
||||
echo "Now you have been migrated to HDK-Core v${LATEST_VERSION}!"
|
||||
echo ''
|
||||
@@ -14,66 +14,72 @@
|
||||
"email": "dongyun.li@luxcreo.ai"
|
||||
}
|
||||
],
|
||||
"bin": [
|
||||
"bin/hdk-migrate-core.sh"
|
||||
],
|
||||
"require": {
|
||||
"php": "^8.1",
|
||||
"php": ">=8.1",
|
||||
"ext-dom": "*",
|
||||
"ext-libxml": "*",
|
||||
"ext-redis": "^5.3|^6.0",
|
||||
"ext-swoole": "*",
|
||||
"composer/composer": ">=2.0",
|
||||
"ergebnis/http-method": "^2.2",
|
||||
"hyperf/config": "^3.0.18",
|
||||
"hyperf/constants": "^3.0.18",
|
||||
"hyperf/context": "^3.0.18",
|
||||
"hyperf/di": "^3.0.18",
|
||||
"hyperf/framework": "^3.0.18",
|
||||
"hyperf/logger": "^3.0.18",
|
||||
"hyperf/redis": "^3.0.18",
|
||||
"hyperf/resource": "^3.0.18",
|
||||
"hyperf/translation": "^3.0.18",
|
||||
"ergebnis/http-method": "^2.5",
|
||||
"friendsofhyperf/rector": "^0.1.5",
|
||||
"hyperf/config": "3.1.*",
|
||||
"hyperf/constants": "3.1.*",
|
||||
"hyperf/context": "3.1.*",
|
||||
"hyperf/di": "3.1.*",
|
||||
"hyperf/framework": "3.1.*",
|
||||
"hyperf/logger": "3.1.*",
|
||||
"hyperf/redis": "3.1.*",
|
||||
"hyperf/resource": "3.1.*",
|
||||
"hyperf/translation": "3.1.*",
|
||||
"jetbrains/phpstorm-attributes": "^1.0",
|
||||
"lmc/http-constants": "^1.2",
|
||||
"myclabs/php-enum": "^1.8",
|
||||
"roave/dont": "^1.5",
|
||||
"symfony/http-foundation": "^6.0",
|
||||
"symfony/polyfill-php81": "^1.26",
|
||||
"teapot/status-code": "^1.1",
|
||||
"ext-libxml": "*",
|
||||
"ext-dom": "*"
|
||||
"lmc/http-constants": "^1.2.0",
|
||||
"myclabs/php-enum": "^1.8.4",
|
||||
"roave/dont": "^1.6.0",
|
||||
"symfony/http-foundation": "^6.4",
|
||||
"symfony/polyfill-php81": "^1.28",
|
||||
"symfony/polyfill-php82": "^1.28",
|
||||
"symfony/polyfill-php83": "^1.28",
|
||||
"teapot/status-code": "^1.1.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"alibabacloud/dysmsapi-20170525": "^2.0",
|
||||
"cooper/hyperf-pest": "^1.1",
|
||||
"firebase/php-jwt": "^6.1",
|
||||
"friendsofphp/php-cs-fixer": "^3.13",
|
||||
"guzzlehttp/guzzle": "^7.5",
|
||||
"hyperf/crontab": "^3.0.18",
|
||||
"hyperf/database": "^3.0.18",
|
||||
"hyperf/db": "^3.0.18",
|
||||
"hyperf/guzzle": "^3.0.18",
|
||||
"hyperf/session": "^3.0.18",
|
||||
"hyperf/validation": "^3.0.18",
|
||||
"pestphp/pest": "^1.22",
|
||||
"phpstan/phpstan": "^1.9",
|
||||
"phpunit/phpunit": "^9.6",
|
||||
"firebase/php-jwt": "^6.9",
|
||||
"friendsofhyperf/pest-plugin-hyperf": "3.1.*",
|
||||
"friendsofphp/php-cs-fixer": "^3.41.1",
|
||||
"guzzlehttp/guzzle": "^7.8",
|
||||
"hyperf/crontab": "3.1.*",
|
||||
"hyperf/database": "3.1.*",
|
||||
"hyperf/db": "3.1.*",
|
||||
"hyperf/guzzle": "3.1.*",
|
||||
"hyperf/session": "3.1.*",
|
||||
"hyperf/testing": "^3.1",
|
||||
"hyperf/validation": "3.1.*",
|
||||
"pestphp/pest": "^2.23",
|
||||
"phpstan/phpstan": "^1.10.49",
|
||||
"rector/rector": "^0.15.25",
|
||||
"roave/security-advisories": "dev-latest",
|
||||
"spatie/pest-plugin-test-time": "^1.1",
|
||||
"spatie/pest-plugin-test-time": "^2.0",
|
||||
"swoole/ide-helper": "*",
|
||||
"symfony/mailer": "^6.0",
|
||||
"symfony/serializer": "^6.0"
|
||||
"symfony/mailer": "^6.4.0",
|
||||
"symfony/serializer": "^6.4.1"
|
||||
},
|
||||
"suggest": {
|
||||
"firebase/php-jwt": "JWT 鉴权必需",
|
||||
"hyperf/session": "^3.0.18",
|
||||
"hyperf/session": "3.1.*",
|
||||
"symfony/mailer": "用于发送电子邮件",
|
||||
"symfony/serializer": "处理 XML 必需",
|
||||
"ext-dom": "处理 XML 必需",
|
||||
"ext-libxml": "处理 XML 必需",
|
||||
"hyperf/guzzle": "^3.0.18",
|
||||
"hyperf/guzzle": "3.1.*",
|
||||
"alibabacloud/dysmsapi-20170525": "阿里云短信服务必需"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"sort-packages": true,
|
||||
"secure-http": false,
|
||||
"allow-plugins": {
|
||||
"pestphp/pest-plugin": true
|
||||
}
|
||||
@@ -88,7 +94,6 @@
|
||||
"Singularity\\HDK\\Test\\Core\\": "tests/"
|
||||
}
|
||||
},
|
||||
"minimum-stability": "alpha",
|
||||
"archive": {
|
||||
"exclude": [
|
||||
".idea",
|
||||
@@ -102,32 +107,28 @@
|
||||
"phpunit.xml"
|
||||
]
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"prefer-stable": true,
|
||||
"scripts": {
|
||||
"post-root-package-install": [],
|
||||
"test": [
|
||||
"rm -rf runtime",
|
||||
"Composer\\Config::disableProcessTimeout",
|
||||
"co-pest --prepend tests/bootstrap.php -c phpunit.xml --colors=always $1"
|
||||
"pest --coroutine --prepend tests/bootstrap.php --colors=always"
|
||||
],
|
||||
"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",
|
||||
"@test",
|
||||
"echo CI Success"
|
||||
]
|
||||
},
|
||||
"repositories": {
|
||||
"lux-map": {
|
||||
"type": "composer",
|
||||
"url": "https://satis.luxcreo.cn/"
|
||||
},
|
||||
"packagist": {
|
||||
"type": "composer",
|
||||
"url": "https://mirrors.aliyun.com/composer/"
|
||||
}
|
||||
},
|
||||
"version": "1.0.0-alpha.15"
|
||||
"version": "1.0.0-beta.3"
|
||||
}
|
||||
|
||||
5425
composer.lock
generated
5425
composer.lock
generated
File diff suppressed because it is too large
Load Diff
198
hyperf31_rector.php
Normal file
198
hyperf31_rector.php
Normal file
@@ -0,0 +1,198 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* hyperf31_rector.php@LuxLink
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/12/14
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Rector\Config\RectorConfig;
|
||||
use Rector\Renaming\Rector\FuncCall\RenameFunctionRector;
|
||||
use Rector\Renaming\Rector\MethodCall\RenameMethodRector;
|
||||
use Rector\Renaming\Rector\Name\RenameClassRector;
|
||||
use Rector\Renaming\ValueObject\MethodCallRename;
|
||||
|
||||
return static function (RectorConfig $rectorConfig): void {
|
||||
defined('BASE_PATH') || define('BASE_PATH', dirname(__DIR__, 3));
|
||||
$rectorConfig->importNames(true, false);
|
||||
|
||||
$rectorConfig->paths([
|
||||
BASE_PATH . '/app',
|
||||
BASE_PATH . '/config',
|
||||
BASE_PATH . '/tests',
|
||||
]);
|
||||
|
||||
$rectorConfig
|
||||
->ruleWithConfiguration(RenameClassRector::class, [
|
||||
// AsyncQueue
|
||||
'Hyperf\AsyncQueue\Message' => 'Hyperf\AsyncQueue\JobMessage',
|
||||
|
||||
// DbConnection
|
||||
'Hyperf\DbConnection\Listener\CreatingListener' => 'Hyperf\DbConnection\Listener\InitUidOnCreatingListener',
|
||||
|
||||
// HttpMessage
|
||||
'Hyperf\HttpMessage\Server\ConnectionInterface' => 'Hyperf\Engine\Contract\Http\Writable',
|
||||
'Hyperf\HttpMessage\Server\Connection\SwooleConnection' => 'Hyperf\Engine\Http\WritableConnection',
|
||||
|
||||
// Redis
|
||||
'Hyperf\Redis\ScanCaller' => 'Hyperf\Redis\Traits\ScanCaller',
|
||||
|
||||
// Channel
|
||||
'Hyperf\Utils\Channel\Caller' => 'Hyperf\Coroutine\Channel\Caller',
|
||||
'Hyperf\Utils\Channel\ChannelManager' => 'Hyperf\Coroutine\Channel\Manager',
|
||||
|
||||
// Codec
|
||||
'Hyperf\Utils\Codec\Base62' => 'Hyperf\Codec\Base62',
|
||||
'Hyperf\Utils\Codec\Json' => 'Hyperf\Codec\Json',
|
||||
'Hyperf\Utils\Codec\Xml' => 'Hyperf\Codec\Xml',
|
||||
|
||||
// CodeGen
|
||||
'Hyperf\Utils\CodeGen\Package' => 'Hyperf\CodeParser\Package',
|
||||
'Hyperf\Utils\CodeGen\PhpDocReader' => 'Hyperf\CodeParser\PhpDocReader',
|
||||
'Hyperf\Utils\CodeGen\PhpDocReaderManager' => 'Hyperf\CodeParser\PhpDocReaderManager',
|
||||
'Hyperf\Utils\CodeGen\PhpParser' => 'Hyperf\CodeParser\PhpParser',
|
||||
'Hyperf\Utils\CodeGen\Project' => 'Hyperf\CodeParser\Project',
|
||||
|
||||
// Command
|
||||
'Hyperf\Command\ConfirmableTrait' => 'Hyperf\Command\Concerns\Confirmable',
|
||||
'Hyperf\Command\DisableEventDispatcher' => 'Hyperf\Command\Concerns\DisableEventDispatcher',
|
||||
'Hyperf\Command\NullDisableEventDispatcher' => 'Hyperf\Command\Concerns\NullDisableEventDispatcher',
|
||||
|
||||
// Contracts
|
||||
'Hyperf\Utils\Contracts\Arrayable' => 'Hyperf\Contract\Arrayable',
|
||||
'Hyperf\Utils\Contracts\Jsonable' => 'Hyperf\Contract\Jsonable',
|
||||
'Hyperf\Utils\Contracts\MessageBag' => 'Hyperf\Contract\MessageBag',
|
||||
'Hyperf\Utils\Contracts\MessageProvider' => 'Hyperf\Contract\MessageProvider',
|
||||
'Hyperf\Utils\Contracts\Xmlable' => 'Hyperf\Contract\Xmlable',
|
||||
|
||||
// Coordinator
|
||||
'Hyperf\Utils\Coordinator\Constants' => 'Hyperf\Coordinator\Constants',
|
||||
'Hyperf\Utils\Coordinator\Coordinator' => 'Hyperf\Coordinator\Coordinator',
|
||||
'Hyperf\Utils\Coordinator\CoordinatorManager' => 'Hyperf\Coordinator\CoordinatorManager',
|
||||
|
||||
// Coroutine
|
||||
'Hyperf\Utils\Coroutine\Concurrent' => 'Hyperf\Coroutine\Concurrent',
|
||||
'Hyperf\Utils\Coroutine\Locker' => 'Hyperf\Coroutine\Locker',
|
||||
|
||||
// Exception
|
||||
'Hyperf\Utils\Exception\ChannelClosedException' => 'Hyperf\Coroutine\Exception\ChannelClosedException',
|
||||
'Hyperf\Utils\Exception\ExceptionThrower' => 'Hyperf\Support\Exception\ExceptionThrower',
|
||||
'Hyperf\Utils\Exception\InvalidArgumentException' => 'Hyperf\Support\Exception\InvalidArgumentException',
|
||||
'Hyperf\Utils\Exception\IPReadFailedException' => 'Hyperf\Support\Exception\IPReadFailedException',
|
||||
'Hyperf\Utils\Exception\ParallelExecutionException' => 'Hyperf\Coroutine\Exception\ParallelExecutionException',
|
||||
'Hyperf\Utils\Exception\TimeoutException' => 'Hyperf\Coroutine\Exception\TimeoutException',
|
||||
'Hyperf\Utils\Exception\WaitTimeoutException' => 'Hyperf\Coroutine\Exception\WaitTimeoutException',
|
||||
|
||||
// Filesystem
|
||||
'Hyperf\Utils\Filesystem\FileNotFoundException' => 'Hyperf\Support\Filesystem\FileNotFoundException',
|
||||
'Hyperf\Utils\Filesystem\Filesystem' => 'Hyperf\Support\Filesystem\Filesystem',
|
||||
|
||||
// Packer
|
||||
'Hyperf\Utils\Packer\JsonPacker' => 'Hyperf\Codec\Packer\JsonPacker',
|
||||
'Hyperf\Utils\Packer\PhpSerializerPacker' => 'Hyperf\Codec\Packer\PhpSerializerPacker',
|
||||
|
||||
// Reflection
|
||||
'Hyperf\Utils\Reflection\ClassInvoker' => 'Hyperf\Support\Reflection\ClassInvoker',
|
||||
|
||||
// Serializer
|
||||
'Hyperf\Utils\Serializer\ExceptionNormalizer' => 'Hyperf\Serializer\ExceptionNormalizer',
|
||||
'Hyperf\Utils\Serializer\JsonDeNormalizer' => 'Hyperf\Serializer\JsonDeNormalizer',
|
||||
'Hyperf\Utils\Serializer\ScalarNormalizer' => 'Hyperf\Serializer\ScalarNormalizer',
|
||||
'Hyperf\Utils\Serializer\Serializer' => 'Hyperf\Serializer\Serializer',
|
||||
'Hyperf\Utils\Serializer\SerializerFactory' => 'Hyperf\Serializer\SerializerFactory',
|
||||
'Hyperf\Utils\Serializer\SimpleNormalizer' => 'Hyperf\Serializer\SimpleNormalizer',
|
||||
'Hyperf\Utils\Serializer\SymfonyNormalizer' => 'Hyperf\Serializer\SymfonyNormalizer',
|
||||
|
||||
// Traits
|
||||
'Hyperf\Utils\Traits\Conditionable' => 'Hyperf\Conditionable\Conditionable',
|
||||
'Hyperf\Utils\Traits\Container' => 'Hyperf\Support\Traits\Container',
|
||||
'Hyperf\Utils\Traits\CoroutineProxy' => 'Hyperf\Context\Traits\CoroutineProxy',
|
||||
'Hyperf\Utils\Traits\ForwardsCalls' => 'Hyperf\Support\Traits\ForwardsCalls',
|
||||
'Hyperf\Utils\Traits\StaticInstance' => 'Hyperf\Support\Traits\StaticInstance',
|
||||
'Hyperf\Utils\Traits\Tappable' => 'Hyperf\Tappable\Tappable',
|
||||
|
||||
// Utils
|
||||
'Hyperf\Utils\ApplicationContext' => 'Hyperf\Context\ApplicationContext',
|
||||
'Hyperf\Utils\Arr' => 'Hyperf\Collection\Arr',
|
||||
'Hyperf\Utils\Backoff' => 'Hyperf\Support\Backoff',
|
||||
'Hyperf\Utils\ChannelPool' => 'Hyperf\Coroutine\Channel\Pool',
|
||||
'Hyperf\Utils\ClearStatCache' => 'Hyperf\Support\ClearStatCache',
|
||||
'Hyperf\Utils\Collection' => 'Hyperf\Collection\Collection',
|
||||
'Hyperf\Utils\Composer' => 'Hyperf\Support\Composer',
|
||||
'Hyperf\Utils\Coroutine' => 'Hyperf\Coroutine\Coroutine',
|
||||
'Hyperf\Utils\Fluent' => 'Hyperf\Support\Fluent',
|
||||
'Hyperf\Utils\HigherOrderCollectionProxy' => 'Hyperf\Collection\HigherOrderCollectionProxy',
|
||||
'Hyperf\Utils\HigherOrderTapProxy' => 'Hyperf\Tappable\HigherOrderTapProxy',
|
||||
'Hyperf\Utils\InteractsWithTime' => 'Hyperf\Support\Traits\InteractsWithTime',
|
||||
'Hyperf\Utils\IPReader' => 'Hyperf\Support\IPReader',
|
||||
'Hyperf\Utils\MessageBag' => 'Hyperf\Support\MessageBag',
|
||||
'Hyperf\Utils\MimeTypeExtensionGuesser' => 'Hyperf\Support\MimeTypeExtensionGuesser',
|
||||
'Hyperf\Utils\Network' => 'Hyperf\Support\Network',
|
||||
'Hyperf\Utils\Optional' => 'Hyperf\Support\Optional',
|
||||
'Hyperf\Utils\Parallel' => 'Hyperf\Coroutine\Parallel',
|
||||
'Hyperf\Utils\Pipeline' => 'Hyperf\Pipeline\Pipeline',
|
||||
'Hyperf\Utils\Pluralizer' => 'Hyperf\Support\Pluralizer',
|
||||
'Hyperf\Utils\ResourceGenerator' => 'Hyperf\Support\ResourceGenerator',
|
||||
'Hyperf\Utils\SafeCaller' => 'Hyperf\Support\SafeCaller',
|
||||
'Hyperf\Utils\Str' => 'Hyperf\Stringable\Str',
|
||||
'Hyperf\Utils\Stringable' => 'Hyperf\Stringable\Stringable',
|
||||
'Hyperf\Utils\System' => 'Hyperf\Support\System',
|
||||
'Hyperf\Utils\Waiter' => 'Hyperf\Coroutine\Waiter',
|
||||
'Hyperf\Utils\WaitGroup' => 'Hyperf\Coroutine\WaitGroup',
|
||||
]);
|
||||
|
||||
$rectorConfig
|
||||
->ruleWithConfiguration(RenameFunctionRector::class, [
|
||||
// hyperf/config
|
||||
'config' => 'Hyperf\Config\config',
|
||||
|
||||
// hyperf/collection
|
||||
'collect' => 'Hyperf\Collection\collect',
|
||||
'data_fill' => 'Hyperf\Collection\data_fill',
|
||||
'data_get' => 'Hyperf\Collection\data_get',
|
||||
'data_set' => 'Hyperf\Collection\data_set',
|
||||
'head' => 'Hyperf\Collection\head',
|
||||
'last' => 'Hyperf\Collection\last',
|
||||
|
||||
// hyperf/continue
|
||||
'co' => 'Hyperf\Coroutine\co',
|
||||
'defer' => 'Hyperf\Coroutine\defer',
|
||||
'go' => 'Hyperf\Coroutine\go',
|
||||
'parallel' => 'Hyperf\Coroutine\parallel',
|
||||
'run' => 'Hyperf\Coroutine\run',
|
||||
'wait' => 'Hyperf\Coroutine\wait',
|
||||
|
||||
// hyperf/tappable
|
||||
'tap' => 'Hyperf\Tappable\tap',
|
||||
|
||||
// hyperf/translation
|
||||
'__' => 'Hyperf\Translation\__',
|
||||
'trans' => 'Hyperf\Translation\trans',
|
||||
'trans_choice' => 'Hyperf\Translation\trans_choice',
|
||||
|
||||
// hyperf/utils
|
||||
'value' => 'Hyperf\Support\value',
|
||||
'env' => 'Hyperf\Support\env',
|
||||
'retry' => 'Hyperf\Support\retry',
|
||||
'with' => 'Hyperf\Support\with',
|
||||
'call' => 'Hyperf\Support\call',
|
||||
'class_basename' => 'Hyperf\Support\class_basename',
|
||||
'trait_uses_recursive' => 'Hyperf\Support\trait_uses_recursive',
|
||||
'class_uses_recursive' => 'Hyperf\Support\class_uses_recursive',
|
||||
'setter' => 'Hyperf\Support\setter',
|
||||
'getter' => 'Hyperf\Support\getter',
|
||||
'make' => 'Hyperf\Support\make',
|
||||
'swoole_hook_flags' => 'Hyperf\Support\swoole_hook_flags',
|
||||
'optional' => 'Hyperf\Support\optional',
|
||||
]);
|
||||
|
||||
$rectorConfig->ruleWithConfiguration(RenameMethodRector::class, [
|
||||
new MethodCallRename('Hyperf\Dag\Dag', 'checkCircularDependences', 'checkCircularDependencies'),
|
||||
// new MethodCallRename('Hyperf\DbConnection\Connection', 'isTransaction', 'transactionLevel'),
|
||||
new MethodCallRename('Hyperf\Testing\Client', 'init', 'initRequest'),
|
||||
new MethodCallRename('Hyperf\Cache\CacheListenerCollector', 'getListner', 'getListener'),
|
||||
]);
|
||||
};
|
||||
@@ -8,6 +8,7 @@ parameters:
|
||||
- tests
|
||||
ignoreErrors:
|
||||
- '#Constant BASE_PATH not found#'
|
||||
- '#Unknown parameter \$[a-zA-Z0-9]+ in call to callable Closure\.#'
|
||||
- '#Property [a-zA-Z0-9\\_]+::\$[a-zA-Z0-9]+ is never written, only read\.#'
|
||||
- '#Method [a-zA-Z0-9\\_]+::[a-zA-Z0-9]+\(\) is unused\.#'
|
||||
- '#Method [a-zA-Z0-9\\_]+::[a-zA-Z0-9]+\(\) has parameter \$response with no value type specified in iterable type array\.#'
|
||||
|
||||
24
phpunit.xml
24
phpunit.xml
@@ -1,16 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
bootstrap="./tests/bootstrap.php"
|
||||
colors="true"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.6/phpunit.xsd">
|
||||
<coverage processUncoveredFiles="true">
|
||||
<include>
|
||||
<directory suffix=".php">./app</directory>
|
||||
</include>
|
||||
</coverage>
|
||||
<phpunit
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
bootstrap="./tests/bootstrap.php"
|
||||
colors="true"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.4/phpunit.xsd"
|
||||
cacheDirectory=".phpunit.cache"
|
||||
>
|
||||
<coverage/>
|
||||
<testsuites>
|
||||
<testsuite name="Tests">
|
||||
<directory>./tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
||||
<source>
|
||||
<include>
|
||||
<directory>./app</directory>
|
||||
</include>
|
||||
</source>
|
||||
</phpunit>
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
docker run --rm -it \
|
||||
-v $(pwd):/app -e "GIT_AUTHOR_NAME=$(git config user.name)" -e "EMAIL=$(git config user.email)" \
|
||||
detouched/standard-version:latest -p=alpha $1
|
||||
detouched/standard-version:latest -p=beta $1
|
||||
|
||||
@@ -24,7 +24,6 @@ class ConfigProvider
|
||||
/** @phpstan-ignore-next-line */
|
||||
public function __invoke(): array
|
||||
{
|
||||
/** @noinspection PhpUndefinedConstantInspection */
|
||||
return [
|
||||
// 合并到 config/autoload/dependencies.php 文件
|
||||
'dependencies' => [
|
||||
|
||||
@@ -72,10 +72,8 @@ class CommonHandler extends ExceptionHandler
|
||||
$message_name = config('common.response.message_name');
|
||||
$is_testing = config('app_status') === true;
|
||||
$this->request?->url();
|
||||
$is_debug = $this->request?->hasHeader('Postman-Token') || str_starts_with(
|
||||
$this->request?->header('User-Agent', ''),
|
||||
'apifox'
|
||||
);
|
||||
|
||||
$is_debug = $is_testing;
|
||||
$error_type = $throwable::class;
|
||||
$request_time = Carbon::now()->toDateTimeString();
|
||||
$request_data = Json::encode($this->request?->getParsedBody());
|
||||
@@ -156,7 +154,9 @@ class CommonHandler extends ExceptionHandler
|
||||
// 模型不存在
|
||||
if ($throwable instanceof ModelNotFoundException) {
|
||||
$code = empty($throwable->getCode()) ? CommonErrorCode::MODEL_NOT_FOUND : $throwable->getCode();
|
||||
$message = empty($throwable->getCode()) ? CommonErrorCode::getMessage($code, ['resource' => '资源']
|
||||
$message = empty($throwable->getCode()) ? CommonErrorCode::getMessage(
|
||||
$code,
|
||||
['resource' => '资源']
|
||||
) : $throwable->getMessage();
|
||||
$data = [$code_name => $code, $message_name => $message];
|
||||
$status_code = RFC7231::NOT_FOUND;
|
||||
|
||||
@@ -4,7 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace Singularity\HDK\Core\Http;
|
||||
|
||||
use Ergebnis\Http\Method;
|
||||
use Ergebnis\Http\Method\Rfc\Rfc5789;
|
||||
use Ergebnis\Http\Method\Rfc\Rfc7231;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
@@ -14,6 +15,8 @@ use Hyperf\Guzzle\ClientFactory;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Singularity\HDK\Core\Service\AbstractSingleton;
|
||||
|
||||
use function Hyperf\Support\make;
|
||||
|
||||
/**
|
||||
* Singularity\HDK\Core\Service\Http\RequestService@Core
|
||||
*
|
||||
@@ -41,13 +44,15 @@ final class RequestService extends AbstractSingleton
|
||||
{
|
||||
$this->setOptions($options);
|
||||
/** @var ClientFactory $client */
|
||||
$client = \Hyperf\Support\make(ClientFactory::class);
|
||||
$client = make(ClientFactory::class);
|
||||
$this->client = $client;
|
||||
}
|
||||
|
||||
/**
|
||||
* 定制 options
|
||||
*
|
||||
* @param Options $options
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setOptions(array $options): self
|
||||
@@ -57,10 +62,11 @@ final class RequestService extends AbstractSingleton
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param string $url
|
||||
* @param array<string, string|int> $params
|
||||
* @param array $data
|
||||
* @param Options $options
|
||||
* @param array<string, mixed> $data
|
||||
* @param Options $options
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
@@ -71,14 +77,17 @@ final class RequestService extends AbstractSingleton
|
||||
array $options = []
|
||||
): ResponseInterface {
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc7231::GET, uri: $url
|
||||
method: Rfc7231::GET,
|
||||
uri: $url
|
||||
);
|
||||
return $this->getClient($options)->send($request, ['query' => $params, 'json' => $data,]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 工厂模式初始化请求
|
||||
*
|
||||
* @param Options $options
|
||||
*
|
||||
* @return Client
|
||||
*/
|
||||
private function getClient(array $options): Client
|
||||
@@ -88,10 +97,11 @@ final class RequestService extends AbstractSingleton
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param string $url
|
||||
* @param array<string, string|int> $params
|
||||
* @param array<string, mixed> $data
|
||||
* @param Options $options
|
||||
* @param array<string, mixed> $data
|
||||
* @param Options $options
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
@@ -103,7 +113,7 @@ final class RequestService extends AbstractSingleton
|
||||
): ResponseInterface {
|
||||
$data = Json::encode($data);
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc7231::POST,
|
||||
method: Rfc7231::POST,
|
||||
uri: $url,
|
||||
headers: ['Content-Type' => 'application/json'],
|
||||
body: Utils::streamFor($data),
|
||||
@@ -112,10 +122,11 @@ final class RequestService extends AbstractSingleton
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param array<string, string|int> $params
|
||||
* @param Options $options
|
||||
* @param Options $options
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
@@ -127,21 +138,23 @@ final class RequestService extends AbstractSingleton
|
||||
): ResponseInterface {
|
||||
$data = Json::encode($data);
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc7231::PUT,
|
||||
method: Rfc7231::PUT,
|
||||
uri: $url,
|
||||
headers: ['Content-Type' => 'application/json'],
|
||||
body: Utils::streamFor($data)
|
||||
);
|
||||
return $this->getClient($options)->send(
|
||||
$request, ['query' => $params,]
|
||||
$request,
|
||||
['query' => $params,]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param array<string, string|int> $params
|
||||
* @param Options $options
|
||||
* @param Options $options
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
@@ -153,21 +166,23 @@ final class RequestService extends AbstractSingleton
|
||||
): ResponseInterface {
|
||||
$data = Json::encode($data);
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc5789::PATCH,
|
||||
method: Rfc5789::PATCH,
|
||||
uri: $url,
|
||||
headers: ['Content-Type' => 'application/json'],
|
||||
body: Utils::streamFor($data)
|
||||
);
|
||||
return $this->getClient($options)->send(
|
||||
$request, ['query' => $params,]
|
||||
$request,
|
||||
['query' => $params,]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param array<string, string|int> $params
|
||||
* @param Options $options
|
||||
* @param Options $options
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
@@ -179,13 +194,14 @@ final class RequestService extends AbstractSingleton
|
||||
): ResponseInterface {
|
||||
$data = Json::encode($data);
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc7231::DELETE,
|
||||
method: Rfc7231::DELETE,
|
||||
uri: $url,
|
||||
headers: ['Content-Type' => 'application/json'],
|
||||
body: Utils::streamFor($data)
|
||||
);
|
||||
return $this->getClient($options)->send(
|
||||
$request, ['query' => $params,]
|
||||
$request,
|
||||
['query' => $params,]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,13 @@ use Singularity\HDK\Core\Service\AbstractFactory;
|
||||
|
||||
final class RequestServiceFactory extends AbstractFactory
|
||||
{
|
||||
/**
|
||||
* @param array<string,mixed> $options
|
||||
*
|
||||
* @return RequestService
|
||||
*/
|
||||
public static function make(array $options = []): RequestService
|
||||
{
|
||||
return new RequestService($options);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ enum Languages: string
|
||||
return match (mb_strtolower($language)) {
|
||||
'en', 'en_us', 'en-us', 'en-uk', 'en_uk' => self::EN,
|
||||
'zh', 'zh_cn', 'zh-cn' => self::ZH_CN,
|
||||
default => self::from(config('translation.locale')),
|
||||
default => self::from(config('translation.locale') ?? 'en'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,12 +15,13 @@ use Hyperf\Contract\Arrayable;
|
||||
use Hyperf\Contract\Jsonable;
|
||||
use Hyperf\Contract\LengthAwarePaginatorInterface;
|
||||
use Hyperf\Di\Annotation\Inject;
|
||||
use Hyperf\HttpMessage\Server\ResponsePlusProxy;
|
||||
use Hyperf\HttpMessage\Stream\SwooleStream;
|
||||
use Hyperf\HttpServer\CoreMiddleware;
|
||||
use Lmc\HttpConstants\Header;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Singularity\HDK\Core\Service\UtilsService;
|
||||
use Swow\Psr7\Message\ResponsePlusInterface;
|
||||
|
||||
use function Hyperf\Config\config;
|
||||
|
||||
@@ -32,7 +33,7 @@ use function Hyperf\Config\config;
|
||||
* Created on 2022/4/29
|
||||
*
|
||||
* @deprecated
|
||||
* @see CommonCoreMiddleware
|
||||
* @see CommonCoreMiddleware
|
||||
*/
|
||||
class ClassicCoreMiddleware extends CoreMiddleware
|
||||
{
|
||||
@@ -43,24 +44,41 @@ class ClassicCoreMiddleware extends CoreMiddleware
|
||||
* Transfer the non-standard response content to a standard response object.
|
||||
* @template TKey of array-key
|
||||
* @template TValue
|
||||
*
|
||||
* @param null|array<TKey, TValue>|Arrayable<TKey, TValue>|Jsonable|string $response
|
||||
*/
|
||||
protected function transferToResponse($response, ServerRequestInterface $request): ResponseInterface
|
||||
{
|
||||
protected function transferToResponse(
|
||||
$response,
|
||||
ServerRequestInterface $request
|
||||
): ResponsePlusInterface {
|
||||
$code_name = config('common.response.code_name');
|
||||
$message_name = config('common.response.message_name');
|
||||
$data_name = config('common.response.data_name');
|
||||
// 分页数据
|
||||
if ($response instanceof LengthAwarePaginatorInterface) {
|
||||
$paginator = $response;
|
||||
$fact_response = $this->response()->withHeader('Per-Page', (string)$paginator->perPage())->withHeader(
|
||||
'Total',
|
||||
(string)$paginator->total()
|
||||
)->withHeader('Current-Page', (string)$paginator->currentPage())->withHeader(
|
||||
'Total-Pages',
|
||||
(string)$paginator->hasPages()
|
||||
$fact_response = $this->response()
|
||||
->withHeader(
|
||||
'Per-Page',
|
||||
(string)$paginator->perPage()
|
||||
)
|
||||
->withHeader(
|
||||
'Total',
|
||||
(string)$paginator->total()
|
||||
)
|
||||
->withHeader(
|
||||
'Current-Page',
|
||||
(string)$paginator->currentPage()
|
||||
)
|
||||
->withHeader(
|
||||
'Total-Pages',
|
||||
(string)$paginator->hasPages()
|
||||
);
|
||||
$fact_response = $this->utilsService->extendLinkToHeader(
|
||||
$fact_response,
|
||||
$paginator->nextPageUrl(),
|
||||
'next'
|
||||
);
|
||||
$fact_response = $this->utilsService->extendLinkToHeader($fact_response, $paginator->nextPageUrl(), 'next');
|
||||
$fact_response = $this->utilsService->extendLinkToHeader(
|
||||
$fact_response,
|
||||
$paginator->url($paginator->lastPage()),
|
||||
@@ -72,23 +90,27 @@ class ClassicCoreMiddleware extends CoreMiddleware
|
||||
$paginator->previousPageUrl(),
|
||||
'prev'
|
||||
);
|
||||
return $fact_response->withAddedHeader(Header::CONTENT_TYPE, 'application/json')->withBody(
|
||||
new SwooleStream(
|
||||
Json::encode(
|
||||
[
|
||||
$code_name => 200,
|
||||
$message_name => 'ok',
|
||||
$data_name => $response->items(),
|
||||
'meta' => [
|
||||
'currentPage' => $paginator->currentPage(),
|
||||
'lastPage' => $paginator->lastPage(),
|
||||
'perPage' => $paginator->perPage(),
|
||||
'total' => $paginator->total(),
|
||||
],
|
||||
]
|
||||
$resp = $fact_response
|
||||
->withAddedHeader(Header::CONTENT_TYPE, 'application/json')
|
||||
->withBody(
|
||||
new SwooleStream(
|
||||
Json::encode(
|
||||
[
|
||||
$code_name => 200,
|
||||
$message_name => 'ok',
|
||||
$data_name => $response->items(),
|
||||
'meta' => [
|
||||
'currentPage' => $paginator->currentPage(),
|
||||
'lastPage' => $paginator->lastPage(),
|
||||
'perPage' => $paginator->perPage(),
|
||||
'total' => $paginator->total(),
|
||||
],
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
);
|
||||
|
||||
return new ResponsePlusProxy($resp);
|
||||
}
|
||||
// 普通数组
|
||||
if (is_array($response) || $response instanceof Arrayable) {
|
||||
|
||||
@@ -15,6 +15,7 @@ use Hyperf\Contract\Arrayable;
|
||||
use Hyperf\Contract\Jsonable;
|
||||
use Hyperf\Contract\LengthAwarePaginatorInterface;
|
||||
use Hyperf\Di\Annotation\Inject;
|
||||
use Hyperf\HttpMessage\Server\ResponsePlusProxy;
|
||||
use Hyperf\HttpMessage\Stream\SwooleStream;
|
||||
use Hyperf\HttpServer\CoreMiddleware;
|
||||
use Lmc\HttpConstants\Header;
|
||||
@@ -22,6 +23,7 @@ use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Singularity\HDK\Core\Service\ApiStyleService;
|
||||
use Singularity\HDK\Core\Service\UtilsService;
|
||||
use Swow\Psr7\Message\ResponsePlusInterface;
|
||||
|
||||
use function Hyperf\Config\config;
|
||||
|
||||
@@ -43,24 +45,31 @@ class CommonCoreMiddleware extends CoreMiddleware
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function transferToResponse($response, ServerRequestInterface $request): ResponseInterface
|
||||
{
|
||||
protected function transferToResponse(
|
||||
$response,
|
||||
ServerRequestInterface $request,
|
||||
): ResponsePlusInterface {
|
||||
$style = $this->apiStyleService->get();
|
||||
|
||||
if ($style === ApiStyleService::RESTFUL) {
|
||||
return $this->transferToRestfulResponse($response, $request);
|
||||
} else {
|
||||
return $this->transferToClassicResponse($response, $request);
|
||||
if (!($response instanceof ResponseInterface)) {
|
||||
$response = $style === ApiStyleService::RESTFUL
|
||||
? $this->transferToRestfulResponse($response, $request)
|
||||
: $this->transferToClassicResponse($response, $request);
|
||||
}
|
||||
|
||||
return new ResponsePlusProxy($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|string|Arrayable|Jsonable|null $response
|
||||
* @param ServerRequestInterface $request
|
||||
* @param null|array|Arrayable|Jsonable|ResponseInterface|string $response
|
||||
* @param ServerRequestInterface $request
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
protected function transferToRestfulResponse(Arrayable|Jsonable|array|string|null $response, ServerRequestInterface $request): ResponseInterface
|
||||
{
|
||||
protected function transferToRestfulResponse(
|
||||
null|array|Arrayable|Jsonable|ResponseInterface|string $response,
|
||||
ServerRequestInterface $request,
|
||||
): ResponseInterface {
|
||||
// 分页数据
|
||||
if ($response instanceof LengthAwarePaginatorInterface) {
|
||||
$fact_response = $this->response()
|
||||
@@ -87,13 +96,14 @@ class CommonCoreMiddleware extends CoreMiddleware
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|string|Arrayable|Jsonable|null $response
|
||||
* @param ServerRequestInterface $request
|
||||
* @param null|array|Arrayable|Jsonable|ResponseInterface|string $response
|
||||
* @param ServerRequestInterface $request
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
protected function transferToClassicResponse(
|
||||
Arrayable|Jsonable|array|string|null $response,
|
||||
ServerRequestInterface $request
|
||||
null|array|Arrayable|Jsonable|ResponseInterface|string $response,
|
||||
ServerRequestInterface $request,
|
||||
): ResponseInterface {
|
||||
$code_name = config('common.response.code_name');
|
||||
$message_name = config('common.response.message_name');
|
||||
@@ -152,6 +162,9 @@ class CommonCoreMiddleware extends CoreMiddleware
|
||||
new SwooleStream(Json::encode($response))
|
||||
);
|
||||
}
|
||||
if ($response instanceof ResponseInterface) {
|
||||
return $response;
|
||||
}
|
||||
// 其他默认按字符串处理
|
||||
return $this->response()->withAddedHeader(Header::CONTENT_TYPE, 'text/plain')->withBody(
|
||||
new SwooleStream((string)$response)
|
||||
|
||||
@@ -13,10 +13,11 @@ use Hyperf\Contract\Arrayable;
|
||||
use Hyperf\Contract\Jsonable;
|
||||
use Hyperf\Contract\LengthAwarePaginatorInterface;
|
||||
use Hyperf\Di\Annotation\Inject;
|
||||
use Hyperf\HttpMessage\Server\ResponsePlusProxy;
|
||||
use Hyperf\HttpServer\CoreMiddleware;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Singularity\HDK\Core\Service\UtilsService;
|
||||
use Swow\Psr7\Message\ResponsePlusInterface;
|
||||
|
||||
/**
|
||||
* Singularity\HDK\Core\Middleware\RestfulCoreMiddleware@HDK-Core
|
||||
@@ -26,7 +27,7 @@ use Singularity\HDK\Core\Service\UtilsService;
|
||||
* Created on 2023/1/14
|
||||
*
|
||||
* @deprecated
|
||||
* @see CommonCoreMiddleware
|
||||
* @see CommonCoreMiddleware
|
||||
*/
|
||||
class RestfulCoreMiddleware extends CoreMiddleware
|
||||
{
|
||||
@@ -37,11 +38,14 @@ class RestfulCoreMiddleware extends CoreMiddleware
|
||||
* @template TKey of array-key
|
||||
* @template TValue
|
||||
* @param null|array<TKey, TValue>|Arrayable<TKey, TValue>|Jsonable|string $response
|
||||
* @param ServerRequestInterface $request
|
||||
* @return ResponseInterface
|
||||
* @param ServerRequestInterface $request
|
||||
*
|
||||
* @return ResponsePlusInterface
|
||||
*/
|
||||
protected function transferToResponse($response, ServerRequestInterface $request): ResponseInterface
|
||||
{
|
||||
protected function transferToResponse(
|
||||
$response,
|
||||
ServerRequestInterface $request
|
||||
): ResponsePlusInterface {
|
||||
// 分页数据
|
||||
if ($response instanceof LengthAwarePaginatorInterface) {
|
||||
$fact_response = $this->response()
|
||||
@@ -56,11 +60,12 @@ class RestfulCoreMiddleware extends CoreMiddleware
|
||||
'last'
|
||||
);
|
||||
$fact_response = $this->utilsService->extendLinkToHeader($fact_response, $response->url(1), 'first');
|
||||
return $this->utilsService->extendLinkToHeader(
|
||||
$resp = $this->utilsService->extendLinkToHeader(
|
||||
$fact_response,
|
||||
$response->previousPageUrl(),
|
||||
'prev'
|
||||
);
|
||||
return new ResponsePlusProxy($resp);
|
||||
}
|
||||
|
||||
return parent::transferToResponse($response, $request);
|
||||
|
||||
@@ -86,7 +86,7 @@ class SessionMiddleware implements MiddlewareInterface
|
||||
/**
|
||||
* Store the current URL for the request if necessary.
|
||||
*/
|
||||
private function storeCurrentUrl(RequestInterface $request, SessionInterface $session)
|
||||
private function storeCurrentUrl(RequestInterface $request, SessionInterface $session): void
|
||||
{
|
||||
if ($request->getMethod() === 'GET') {
|
||||
$session->setPreviousUrl($this->fullUrl($request));
|
||||
@@ -155,7 +155,7 @@ class SessionMiddleware implements MiddlewareInterface
|
||||
return rtrim(preg_replace('/\?.*/', '', (string)$request->getUri()));
|
||||
}
|
||||
|
||||
private function auth(SessionInterface $session)
|
||||
private function auth(SessionInterface $session): bool
|
||||
{
|
||||
return $session->has('userInfo');
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Singularity\HDK\Core\Service;
|
||||
|
||||
use Dont\DontCall;
|
||||
use Dont\DontInstantiate;
|
||||
use Singularity\HDK\Core\Http\RequestService;
|
||||
|
||||
/**
|
||||
* Singularity\HDK\Core\Service\AbstractFactory@Core
|
||||
@@ -26,5 +27,5 @@ abstract class AbstractFactory
|
||||
use DontInstantiate;
|
||||
use DontCall;
|
||||
|
||||
abstract static function make();
|
||||
}
|
||||
abstract public static function make(): RequestService;
|
||||
}
|
||||
|
||||
@@ -23,4 +23,4 @@ abstract class AbstractSingleton
|
||||
{
|
||||
use DontCallStatic;
|
||||
use DontClone;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Singularity\HDK\Core\Service;
|
||||
|
||||
use Ergebnis\Http\Method;
|
||||
use Ergebnis\Http\Method\Rfc\Rfc7231;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
@@ -16,6 +16,7 @@ use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
/**
|
||||
* 发起 Http 请求的类
|
||||
*
|
||||
* @deprecated since version 1.0-alpha.3, to be removed in 1.0
|
||||
*/
|
||||
class HttpRequestService
|
||||
@@ -31,15 +32,16 @@ class HttpRequestService
|
||||
private array $options = [];
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param string $url
|
||||
* @param array<string, string|int> $params
|
||||
* @param array $data
|
||||
* @param array<string, mixed> $data
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function requestGet(string $url, array $params = [], array $data = []): ResponseInterface
|
||||
{
|
||||
$request = new Request(Method\Rfc\Rfc7231::GET, $url);
|
||||
$request = new Request(Rfc7231::GET, $url);
|
||||
return $this->getClient()->send($request, [
|
||||
'query' => $params,
|
||||
'json' => $data,
|
||||
@@ -52,9 +54,10 @@ class HttpRequestService
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param array<string, string|int> $params
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
@@ -74,9 +77,10 @@ class HttpRequestService
|
||||
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param array<string, string|int> $params
|
||||
*
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
@@ -91,7 +95,9 @@ class HttpRequestService
|
||||
|
||||
/**
|
||||
* 定制 options
|
||||
*
|
||||
* @param array<string, mixed> $options
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setOptions(array $options): HttpRequestService
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
namespace Singularity\HDK\Core\Traits;
|
||||
|
||||
use Closure;
|
||||
use Hyperf\Contract\LengthAwarePaginatorInterface;
|
||||
use Hyperf\Database\Model\Builder;
|
||||
use Hyperf\Database\Model\Relations\Relation;
|
||||
use Hyperf\Di\Annotation\Inject;
|
||||
use Hyperf\HttpServer\Contract\RequestInterface;
|
||||
use Hyperf\Paginator\AbstractPaginator;
|
||||
use Hyperf\Stringable\Str;
|
||||
use Singularity\HDK\Core\Service\ExtendService;
|
||||
|
||||
@@ -25,7 +25,7 @@ trait RestfulList
|
||||
#[Inject]
|
||||
protected RequestInterface $request;
|
||||
|
||||
protected function restSelect(Closure $callback, ?Closure $filter = null)
|
||||
protected function restSelect(Closure $callback, ?Closure $filter = null): mixed
|
||||
{
|
||||
$parsed_options = [];
|
||||
$result = $this->parseParameters(
|
||||
@@ -52,11 +52,18 @@ trait RestfulList
|
||||
return $callback(query: $query, options: $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $options
|
||||
* @param Builder|Relation $builder
|
||||
* @param Closure|null $filter
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function responseFormatter(
|
||||
array $options,
|
||||
Builder|Relation $builder,
|
||||
?Closure $filter = null
|
||||
) {
|
||||
): mixed {
|
||||
$perPage = $options['size'] ?? null;
|
||||
$order = $options['order'] ?? 'created_at';
|
||||
$sort = $options['sort'] ?? 'desc';
|
||||
@@ -70,7 +77,7 @@ trait RestfulList
|
||||
return $result;
|
||||
}
|
||||
|
||||
if ($result instanceof LengthAwarePaginatorInterface) {
|
||||
if ($result instanceof AbstractPaginator) {
|
||||
$collection = $result->getCollection();
|
||||
$collection = $filter($collection);
|
||||
|
||||
@@ -78,4 +85,4 @@ trait RestfulList
|
||||
}
|
||||
return $filter($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ it('assertions that send HTML is available', function () use ($email) {
|
||||
HTML
|
||||
);
|
||||
expect($result)->toBeTrue();
|
||||
});
|
||||
})->skip();
|
||||
|
||||
it('assertions that send Text is available', function () use ($email) {
|
||||
$result = $email->sendText(
|
||||
@@ -37,7 +37,7 @@ it('assertions that send Text is available', function () use ($email) {
|
||||
Text
|
||||
);
|
||||
expect($result)->toBeTrue();
|
||||
});
|
||||
})->skip();
|
||||
|
||||
it('assertions Error Receiver can be catch', function () use ($email) {
|
||||
try {
|
||||
@@ -62,4 +62,4 @@ Text
|
||||
} catch (TransportException $t) {
|
||||
expect($t->getCode())->toBe(554);
|
||||
}
|
||||
});
|
||||
})->skip('会报错必须运行在协程环境下');
|
||||
|
||||
@@ -13,6 +13,8 @@ use Hyperf\Context\Context;
|
||||
use Singularity\HDK\Core\Service\ExtendService;
|
||||
use Singularity\HDK\Core\Service\UtilsService;
|
||||
|
||||
use function Hyperf\Support\make;
|
||||
|
||||
/** @var ExtendService $service */
|
||||
$service = make(ExtendService::class, ['utils' => new UtilsService()]);
|
||||
it('asserts no parameters can be parsed.', function (ExtendService $service, $params) {
|
||||
|
||||
@@ -14,6 +14,8 @@ use Singularity\HDK\Core\Http\RequestService;
|
||||
use Singularity\HDK\Core\Http\RequestServiceFactory;
|
||||
use Teapot\StatusCode\RFC\RFC7231;
|
||||
|
||||
use function Hyperf\Support\make;
|
||||
|
||||
class RequestServiceTest
|
||||
{
|
||||
private RequestService $service;
|
||||
@@ -31,7 +33,7 @@ class RequestServiceTest
|
||||
|
||||
test('Http 请求服务可以正常使用', function () {
|
||||
/** @var RequestServiceTest $class */
|
||||
$class = \Hyperf\Support\make(RequestServiceTest::class);
|
||||
$class = make(RequestServiceTest::class);
|
||||
$response = $class->getInstance()->setOptions([
|
||||
'allow_redirects' => false,
|
||||
])->requestGet('https://www.baidu.com');
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
use Hyperf\Codec\Json;
|
||||
use Singularity\HDK\Core\Service\UtilsService;
|
||||
|
||||
use function Hyperf\Support\make;
|
||||
|
||||
$utils = new UtilsService();
|
||||
dataset('categories', [
|
||||
[
|
||||
@@ -168,7 +170,9 @@ JSON
|
||||
$length_data = [];
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
try {
|
||||
$length_data[] = random_int(1, 9);
|
||||
$length_data[(string)$i] = [
|
||||
'length' => random_int(1, 9)
|
||||
];
|
||||
} catch (Exception $e) {
|
||||
continue;
|
||||
}
|
||||
@@ -264,8 +268,8 @@ test('无极分类', function (string $source, string $expected) {
|
||||
}
|
||||
|
||||
/** @var UtilsService $utils */
|
||||
$utils = \Hyperf\Support\make(UtilsService::class);
|
||||
usort($tree, fn($prevent, $current) => $current['level'] <=> $prevent['level']);
|
||||
$utils = make(UtilsService::class);
|
||||
usort($tree, fn ($prevent, $current) => $current['level'] <=> $prevent['level']);
|
||||
|
||||
$tree = array_column($tree, null, 'id');
|
||||
$utils->unlimitedSubCategoriesQuicklyWithLevel(list: $tree);
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* This file is part of Hyperf.
|
||||
*
|
||||
* @link https://www.hyperf.io
|
||||
* @document https://hyperf.wiki
|
||||
* @contact group@hyperf.io
|
||||
* @license https://github.com/hyperf/hyperf/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
use Hyperf\Context\ApplicationContext;
|
||||
use Hyperf\Di\ClassLoader;
|
||||
use Hyperf\Di\Container;
|
||||
use Hyperf\Di\Definition\DefinitionSource;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Swoole\Runtime;
|
||||
|
||||
ini_set('display_errors', 'on');
|
||||
ini_set('display_startup_errors', 'on');
|
||||
@@ -25,13 +19,13 @@ date_default_timezone_set('Asia/Shanghai');
|
||||
!defined('BASE_PATH') && define('BASE_PATH', dirname(__DIR__, 1));
|
||||
!defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', SWOOLE_HOOK_ALL);
|
||||
|
||||
Swoole\Runtime::enableCoroutine(true);
|
||||
Runtime::enableCoroutine(true);
|
||||
|
||||
require BASE_PATH . '/vendor/autoload.php';
|
||||
Hyperf\Di\ClassLoader::init();
|
||||
ClassLoader::init();
|
||||
|
||||
$container = new Container(new DefinitionSource([]));
|
||||
if (!$container instanceof ContainerInterface) {
|
||||
throw new RuntimeException('The dependency injection container is invalid.');
|
||||
}
|
||||
$container = ApplicationContext::setContainer($container);
|
||||
$container = ApplicationContext::setContainer($container);
|
||||
|
||||
Reference in New Issue
Block a user