mirror of
http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore.git
synced 2026-01-15 07:15:06 +08:00
Compare commits
13 Commits
feature/ma
...
v1.0.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5980ea773b | ||
|
|
110679448f | ||
|
|
64f936ab36 | ||
|
|
2afc3ad45b | ||
|
|
cff919a21e | ||
|
|
2d6d12e1c3 | ||
|
|
73420153d3 | ||
|
|
fcb0cd8852 | ||
|
|
7a209e876f | ||
|
|
4032d67f1e | ||
|
|
dbbe278aa6 | ||
|
|
d84855f038 | ||
|
|
2d95fbae9e |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
vendor/
|
||||
.phpunit.result.cache
|
||||
.php-cs-fixer.cache
|
||||
.php-cs-fixer.cache
|
||||
runtime/
|
||||
17
.idea/HDK-Core.iml
generated
17
.idea/HDK-Core.iml
generated
@@ -12,6 +12,7 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/resource-operations" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
|
||||
@@ -29,7 +30,6 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/fig/http-message-util" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/lmc/http-constants" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/cache" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-server-handler" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/event-dispatcher" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-server-middleware" />
|
||||
@@ -109,7 +109,6 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/lexer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/inflector" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ergebnis/http-method" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/firebase/php-jwt" />
|
||||
@@ -156,21 +155,9 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/serializer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/stringable" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/hyperf/support" />
|
||||
<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/hyperf/crontab" />
|
||||
<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/cooper/hyperf-pest" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/clock" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php83" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ta-tikoma/phpunit-architecture-test" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
|
||||
12
.idea/codeception.xml
generated
Normal file
12
.idea/codeception.xml
generated
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Codeception">
|
||||
<option name="configurations">
|
||||
<list>
|
||||
<Configuration>
|
||||
<option name="path" value="$PROJECT_DIR$/tests" />
|
||||
</Configuration>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/pest.xml
generated
Normal file
6
.idea/pest.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PestSettings">
|
||||
<option name="preferredTestFlavor" value="TEST" />
|
||||
</component>
|
||||
</project>
|
||||
257
.idea/php.xml
generated
257
.idea/php.xml
generated
@@ -20,173 +20,162 @@
|
||||
</component>
|
||||
<component name="PhpIncludePathManager">
|
||||
<include_path>
|
||||
<path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/credentials" />
|
||||
<path value="$PROJECT_DIR$/vendor/adbario/php-dot-notation" />
|
||||
<path value="$PROJECT_DIR$/vendor/friendsofphp/php-cs-fixer" />
|
||||
<path value="$PROJECT_DIR$/vendor/swoole/ide-helper" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/type" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/tea-xml" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/darabonba-openapi" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/openapi-util" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/tea" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/tea-utils" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/gateway-spi" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/endpoint-util" />
|
||||
<path value="$PROJECT_DIR$/vendor/teapot/status-code" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/dysmsapi-20170525" />
|
||||
<path value="$PROJECT_DIR$/vendor/laminas/laminas-stdlib" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||
<path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/credentials" />
|
||||
<path value="$PROJECT_DIR$/vendor/justinrainbow/json-schema" />
|
||||
<path value="$PROJECT_DIR$/vendor/laminas/laminas-mime" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest-plugin" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest" />
|
||||
<path value="$PROJECT_DIR$/vendor/myclabs/php-enum" />
|
||||
<path value="$PROJECT_DIR$/vendor/friendsofhyperf/pest-plugin-hyperf" />
|
||||
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
||||
<path value="$PROJECT_DIR$/vendor/graham-campbell/result-type" />
|
||||
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpstan" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest-plugin-arch" />
|
||||
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php73" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php81" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/serializer" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/translation" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/options-resolver" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/mailer" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php83" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/string" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/stopwatch" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/mime" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/process" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/console" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
|
||||
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
|
||||
<path value="$PROJECT_DIR$/vendor/brianium/paratest" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-grapheme" />
|
||||
<path value="$PROJECT_DIR$/vendor/composer" />
|
||||
<path value="$PROJECT_DIR$/vendor/lmc/http-constants" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/cache" />
|
||||
<path value="$PROJECT_DIR$/vendor/fig/http-message-util" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-server-middleware" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
||||
<path value="$PROJECT_DIR$/vendor/lmc/http-constants" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-server-handler" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/clock" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-server-middleware" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/container" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
||||
<path value="$PROJECT_DIR$/vendor/seld/phar-utils" />
|
||||
<path value="$PROJECT_DIR$/vendor/seld/jsonlint" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
||||
<path value="$PROJECT_DIR$/vendor/filp/whoops" />
|
||||
<path value="$PROJECT_DIR$/vendor/seld/signal-handler" />
|
||||
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/nikic/fast-route" />
|
||||
<path value="$PROJECT_DIR$/vendor/seld/signal-handler" />
|
||||
<path value="$PROJECT_DIR$/vendor/fidry/cpu-core-counter" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/database" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/pipeline" />
|
||||
<path value="$PROJECT_DIR$/vendor/react/promise" />
|
||||
<path value="$PROJECT_DIR$/vendor/roave/dont" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/coordinator" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/serializer" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/annotations" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/database" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/contract" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/collection" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/logger" />
|
||||
<path value="$PROJECT_DIR$/vendor/ergebnis/http-method" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/tappable" />
|
||||
<path value="$PROJECT_DIR$/vendor/firebase/php-jwt" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/di" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/context" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/translation" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpoption/phpoption" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/framework" />
|
||||
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/logger" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/http-server" />
|
||||
<path value="$PROJECT_DIR$/vendor/jetbrains/phpstorm-attributes" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/coroutine" />
|
||||
<path value="$PROJECT_DIR$/vendor/lizhichao/one-sm" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/constants" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/codec" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/translation" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/framework" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/config" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/redis" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/server" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/utils" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/crontab" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/complexity" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/constants" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/dispatcher" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/code-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/conditionable" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/server" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/utils" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/http-message" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/exception-handler" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/type" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/macroable" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/db" />
|
||||
<path value="$PROJECT_DIR$/vendor/ta-tikoma/phpunit-architecture-test" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/engine-contract" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/support" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/engine" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/stringable" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/resource" />
|
||||
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/paginator" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/validation" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/tea-xml" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/guzzle" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/darabonba-openapi" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/engine" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/pool" />
|
||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/termwind" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/event" />
|
||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/collision" />
|
||||
<path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/tea-utils" />
|
||||
<path value="$PROJECT_DIR$/vendor/php-di/phpdoc-reader" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/gateway-spi" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/validation" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/session" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/openapi-util" />
|
||||
<path value="$PROJECT_DIR$/vendor/jean85/pretty-package-versions" />
|
||||
<path value="$PROJECT_DIR$/vendor/alibabacloud/tea" />
|
||||
<path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
|
||||
<path value="$PROJECT_DIR$/vendor/php-di/phpdoc-reader" />
|
||||
<path value="$PROJECT_DIR$/vendor/teapot/status-code" />
|
||||
<path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" />
|
||||
<path value="$PROJECT_DIR$/vendor/adbario/php-dot-notation" />
|
||||
<path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
|
||||
<path value="$PROJECT_DIR$/vendor/laminas/laminas-mime" />
|
||||
<path value="$PROJECT_DIR$/vendor/laminas/laminas-stdlib" />
|
||||
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
|
||||
<path value="$PROJECT_DIR$/vendor/myclabs/php-enum" />
|
||||
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
||||
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
|
||||
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php73" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php81" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/translation" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/mailer" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/mime" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/string" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/process" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/console" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-grapheme" />
|
||||
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
|
||||
<path value="$PROJECT_DIR$/vendor/ergebnis/http-method" />
|
||||
<path value="$PROJECT_DIR$/vendor/firebase/php-jwt" />
|
||||
<path value="$PROJECT_DIR$/vendor/jetbrains/phpstorm-attributes" />
|
||||
<path value="$PROJECT_DIR$/vendor/lizhichao/one-sm" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpoption/phpoption" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/complexity" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
|
||||
<path value="$PROJECT_DIR$/vendor/swoole/ide-helper" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest" />
|
||||
<path value="$PROJECT_DIR$/vendor/pestphp/pest-plugin" />
|
||||
<path value="$PROJECT_DIR$/vendor/filp/whoops" />
|
||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/collision" />
|
||||
<path value="$PROJECT_DIR$/vendor/spatie/test-time" />
|
||||
<path value="$PROJECT_DIR$/vendor/spatie/pest-plugin-test-time" />
|
||||
<path value="$PROJECT_DIR$/vendor/friendsofphp/php-cs-fixer" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/options-resolver" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/stopwatch" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpstan" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/coordinator" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/guzzle" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/engine-contract" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/crontab" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/pipeline" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/collection" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/tappable" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/db" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/serializer" />
|
||||
<path value="$PROJECT_DIR$/vendor/facade/ignition-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/serializer" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/code-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/coroutine" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/conditionable" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/codec" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/stringable" />
|
||||
<path value="$PROJECT_DIR$/vendor/hyperf/support" />
|
||||
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
||||
<path value="$PROJECT_DIR$/vendor/cooper/hyperf-pest" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/clock" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php83" />
|
||||
</include_path>
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
|
||||
|
||||
31
.idea/phpspec.xml
generated
Normal file
31
.idea/phpspec.xml
generated
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PHPSpec">
|
||||
<suites>
|
||||
<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>
|
||||
46
CHANGELOG.md
46
CHANGELOG.md
@@ -1,4 +1,50 @@
|
||||
# 版本更新日志
|
||||
## [1.0.0-alpha.7](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.6...v1.0.0-alpha.7) (2023-09-28)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **rest:** 修复不存在的具名参数 ([1106794](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/110679448f310e1d4e25f370b74f2901ca9425d0))
|
||||
|
||||
## [1.0.0-alpha.6](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.5...v1.0.0-alpha.6) (2023-09-28)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **i18n:** 修复了无法正确无视大小写导致无法识别的问题 ([cff919a](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/cff919a21e6d50e396a0d5ceaeefbe3b7c0e3095))
|
||||
* **rest:** 修复没有返回值的问题 ([2afc3ad](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/2afc3ad45b97e3df97827efdd9d16d6dedb3238a))
|
||||
|
||||
## [1.0.0-alpha.5](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.4...v1.0.0-alpha.5) (2023-09-26)
|
||||
|
||||
|
||||
### 🐛 Bug Fixes | Bug 修复
|
||||
|
||||
* **i18n:** 修复了无法正确无视大小写导致无法识别的问题 ([7342015](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/73420153d3791bff38ddd57b5a17120a4ed3cd08))
|
||||
|
||||
## [1.0.0-alpha.4](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.3...v1.0.0-alpha.4) (2023-09-26)
|
||||
|
||||
|
||||
### 📦 Build System | 打包构建
|
||||
|
||||
* **composer:** 引入 pest 并升级到 php8.1 ([dbbe278](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/dbbe278aa6c96634ed5792b5782825770c5cabe8))
|
||||
|
||||
|
||||
### ✨ Features | 新功能
|
||||
|
||||
* **i18n:** 增加枚举值,更新中间件调用方式 ([4032d67](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/4032d67f1e56b8ce29fbfa5bd77ead2636a6ffd3))
|
||||
|
||||
|
||||
### ✅ Tests | 测试
|
||||
|
||||
* **http:** 完成并通过了 http 请求的测试 ([7a209e8](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/7a209e876f8b4301b7bc78f05b68798eb65e77f7))
|
||||
|
||||
## [1.0.0-alpha.3](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.2...v1.0.0-alpha.3) (2023-08-30)
|
||||
|
||||
|
||||
### ♻️ Code Refactoring | 代码重构
|
||||
|
||||
* **http:** 整理了 Http 请求服务 ([2d95fba](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/commit/2d95fbae9e926788402c24266ab0d232732a7754))
|
||||
|
||||
## [1.0.0-alpha.2](http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore/compare/v1.0.0-alpha.1...v1.0.0-alpha.2) (2023-07-21)
|
||||
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.0.0-alpha.2
|
||||
1.0.0-alpha.7
|
||||
@@ -41,8 +41,8 @@
|
||||
},
|
||||
"require-dev": {
|
||||
"alibabacloud/dysmsapi-20170525": "^2.0",
|
||||
"cooper/hyperf-pest": "^1.1",
|
||||
"firebase/php-jwt": "^6.1",
|
||||
"friendsofhyperf/pest-plugin-hyperf": "^3.0.0",
|
||||
"friendsofphp/php-cs-fixer": "^3.13",
|
||||
"guzzlehttp/guzzle": "^7.5",
|
||||
"hyperf/crontab": "^3.0.18",
|
||||
@@ -51,9 +51,11 @@
|
||||
"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.5",
|
||||
"roave/security-advisories": "dev-latest",
|
||||
"spatie/pest-plugin-test-time": "^2.0",
|
||||
"spatie/pest-plugin-test-time": "^1.1",
|
||||
"swoole/ide-helper": "*",
|
||||
"symfony/mailer": "^6.0",
|
||||
"symfony/serializer": "^6.0"
|
||||
@@ -90,7 +92,11 @@
|
||||
"prefer-stable": true,
|
||||
"scripts": {
|
||||
"post-root-package-install": [],
|
||||
"test": "vendor/bin/pest --prepend tests/prepend.php --coroutine $1",
|
||||
"test": [
|
||||
"rm -rf runtime",
|
||||
"Composer\\Config::disableProcessTimeout",
|
||||
"co-pest --prepend tests/bootstrap.php -c phpunit.xml --colors=always $1"
|
||||
],
|
||||
"cs-fix": "vendor/bin/php-cs-fixer fix $1 --rules=@PSR12 --allow-risky=yes",
|
||||
"analyse": "vendor/bin/phpstan analyse $1",
|
||||
"ci": [
|
||||
@@ -107,8 +113,8 @@
|
||||
},
|
||||
"packagist": {
|
||||
"type": "composer",
|
||||
"url": "https://repo.huaweicloud.com/repository/php/"
|
||||
"url": "https://mirrors.aliyun.com/composer/"
|
||||
}
|
||||
},
|
||||
"version": "1.0.0-alpha.2"
|
||||
"version": "1.0.0-alpha.7"
|
||||
}
|
||||
|
||||
22221
composer.lock
generated
Normal file → Executable file
22221
composer.lock
generated
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
26
docs/Http 请求.md
Normal file
26
docs/Http 请求.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Http 请求
|
||||
|
||||
## 1 组成
|
||||
|
||||
* 单例类
|
||||
* \Singularity\HDK\Core\Http\RequestService
|
||||
* 工厂类
|
||||
* \Singularity\HDK\Core\Http\RequestServiceFactory
|
||||
|
||||
## 2 初始化服务
|
||||
|
||||
创建一个请求服务的方法有两种,效果是一致的:
|
||||
|
||||
* 工厂模式
|
||||
* `\Singularity\HDK\Core\Http\RequestServiceFactory::make($options)`
|
||||
* `\Singularity\HDK\Core\Http\RequestServiceFactory::make()->setOptions($options)`
|
||||
* 单例模式
|
||||
* `new \Singularity\HDK\Core\Http\RequestService($options)`
|
||||
* `(new \Singularity\HDK\Core\Http\RequestService())->setOptions($options)`
|
||||
|
||||
这两个方法都回返回一个 `\Singularity\HDK\Core\Http\RequestService` 实例
|
||||
|
||||
## 3 规范
|
||||
|
||||
每个通过本包提供的 Http 请求服务创建的服务,都应该在构建方法中实例化一个 RequestService 服务,
|
||||
之后该服务中使用的所有请求都基于该服务,这样可以避免共用单例模式导致的 options 污染
|
||||
191
src/Http/RequestService.php
Normal file
191
src/Http/RequestService.php
Normal file
@@ -0,0 +1,191 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Singularity\HDK\Core\Http;
|
||||
|
||||
use Ergebnis\Http\Method;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
use GuzzleHttp\Psr7\Utils;
|
||||
use Hyperf\Codec\Json;
|
||||
use Hyperf\Guzzle\ClientFactory;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Singularity\HDK\Core\Service\AbstractSingleton;
|
||||
|
||||
/**
|
||||
* Singularity\HDK\Core\Service\Http\RequestService@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/8/30
|
||||
*
|
||||
* @template Options of array<literal-string, mixed>
|
||||
*/
|
||||
final class RequestService extends AbstractSingleton
|
||||
{
|
||||
// public const TIMEOUT = 20;
|
||||
|
||||
private ClientFactory $client;
|
||||
|
||||
/**
|
||||
* @var Options
|
||||
*/
|
||||
private array $options = [];
|
||||
|
||||
/**
|
||||
* @param Options $options
|
||||
*/
|
||||
public function __construct(array $options = [])
|
||||
{
|
||||
$this->setOptions($options);
|
||||
/** @var ClientFactory $client */
|
||||
$client = \Hyperf\Support\make(ClientFactory::class);
|
||||
$this->client = $client;
|
||||
}
|
||||
|
||||
/**
|
||||
* 定制 options
|
||||
* @param Options $options
|
||||
* @return $this
|
||||
*/
|
||||
public function setOptions(array $options): self
|
||||
{
|
||||
$this->options = array_replace_recursive($this->options, $options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, string|int> $params
|
||||
* @param array $data
|
||||
* @param Options $options
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function requestGet(
|
||||
string $url,
|
||||
array $params = [],
|
||||
array $data = [],
|
||||
array $options = []
|
||||
): ResponseInterface {
|
||||
$request = new Request(
|
||||
method: Method\Rfc\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
|
||||
{
|
||||
$options = array_replace_recursive($this->options, $options);
|
||||
return $this->client->create($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, string|int> $params
|
||||
* @param array<string, mixed> $data
|
||||
* @param Options $options
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function requestPost(
|
||||
string $url,
|
||||
array $params = [],
|
||||
array $data = [],
|
||||
array $options = []
|
||||
): ResponseInterface {
|
||||
$data = Json::encode($data);
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc7231::POST,
|
||||
uri: $url,
|
||||
headers: ['Content-Type' => 'application/json'],
|
||||
body: Utils::streamFor($data),
|
||||
);
|
||||
return $this->getClient($options)->send($request, ['query' => $params,]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param array<string, string|int> $params
|
||||
* @param Options $options
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function requestPut(
|
||||
string $url,
|
||||
array $params = [],
|
||||
array $data = [],
|
||||
array $options = []
|
||||
): ResponseInterface {
|
||||
$data = Json::encode($data);
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc7231::PUT,
|
||||
uri: $url,
|
||||
headers: ['Content-Type' => 'application/json'],
|
||||
body: Utils::streamFor($data)
|
||||
);
|
||||
return $this->getClient($options)->send(
|
||||
$request, ['query' => $params,]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param array<string, string|int> $params
|
||||
* @param Options $options
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function requestPatch(
|
||||
string $url,
|
||||
array $params = [],
|
||||
array $data = [],
|
||||
array $options = []
|
||||
): ResponseInterface {
|
||||
$data = Json::encode($data);
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc5789::PATCH,
|
||||
uri: $url,
|
||||
headers: ['Content-Type' => 'application/json'],
|
||||
body: Utils::streamFor($data)
|
||||
);
|
||||
return $this->getClient($options)->send(
|
||||
$request, ['query' => $params,]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array<string, mixed> $data
|
||||
* @param array<string, string|int> $params
|
||||
* @param Options $options
|
||||
* @return ResponseInterface
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function requestDelete(
|
||||
string $url,
|
||||
array $params = [],
|
||||
array $data = [],
|
||||
array $options = []
|
||||
): ResponseInterface {
|
||||
$data = Json::encode($data);
|
||||
$request = new Request(
|
||||
method: Method\Rfc\Rfc7231::DELETE,
|
||||
uri: $url,
|
||||
headers: ['Content-Type' => 'application/json'],
|
||||
body: Utils::streamFor($data)
|
||||
);
|
||||
return $this->getClient($options)->send(
|
||||
$request, ['query' => $params,]
|
||||
);
|
||||
}
|
||||
}
|
||||
22
src/Http/RequestServiceFactory.php
Normal file
22
src/Http/RequestServiceFactory.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* RequestFactory.php@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/8/30
|
||||
*/
|
||||
|
||||
namespace Singularity\HDK\Core\Http;
|
||||
|
||||
use Singularity\HDK\Core\Service\AbstractFactory;
|
||||
|
||||
final class RequestServiceFactory extends AbstractFactory
|
||||
{
|
||||
public static function make(array $options = []): RequestService
|
||||
{
|
||||
return new RequestService($options);
|
||||
}
|
||||
}
|
||||
28
src/I18n/Enum/Languages.php
Normal file
28
src/I18n/Enum/Languages.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* Languages.php@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/9/26
|
||||
*/
|
||||
|
||||
namespace Singularity\HDK\Core\I18n\Enum;
|
||||
|
||||
use function Hyperf\Config\config;
|
||||
|
||||
enum Languages: string
|
||||
{
|
||||
case ZH_CN = 'zh_CN';
|
||||
|
||||
case EN = 'en';
|
||||
|
||||
public static function getLanguage(string $language): Languages
|
||||
{
|
||||
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')),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -12,10 +12,9 @@ use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Http\Server\MiddlewareInterface;
|
||||
use Psr\Http\Server\RequestHandlerInterface;
|
||||
use Singularity\HDK\Core\I18n\Enum\Languages;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
use function Hyperf\Config\config;
|
||||
|
||||
/**
|
||||
* Singularity\HDK\Utils\Middleware\InternationalizationMiddleware@HDK
|
||||
*
|
||||
@@ -41,12 +40,8 @@ class InternationalizationMiddleware implements MiddlewareInterface
|
||||
|
||||
$language = $req->getPreferredLanguage();
|
||||
if (!empty($language)) {
|
||||
$language = match (strtolower($language)) {
|
||||
'en', 'en_us', 'en-us', 'en-uk', 'en_uk' => 'en',
|
||||
'zh', 'zh_cn', 'zh-cn' => 'zh_CN',
|
||||
default => config('translation.locale'),
|
||||
};
|
||||
$this->translator->setLocale($language);
|
||||
$language = Languages::getLanguage($language);
|
||||
$this->translator->setLocale($language->value);
|
||||
}
|
||||
$response = Context::get(ResponseInterface::class);
|
||||
$response = $response->withAddedHeader(
|
||||
|
||||
30
src/Service/AbstractFactory.php
Normal file
30
src/Service/AbstractFactory.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* AbstractFactory.php@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/8/30
|
||||
*/
|
||||
|
||||
namespace Singularity\HDK\Core\Service;
|
||||
|
||||
use Dont\DontCall;
|
||||
use Dont\DontInstantiate;
|
||||
|
||||
/**
|
||||
* Singularity\HDK\Core\Service\AbstractFactory@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/8/30
|
||||
*/
|
||||
abstract class AbstractFactory
|
||||
{
|
||||
use DontInstantiate;
|
||||
use DontCall;
|
||||
|
||||
abstract static function make();
|
||||
}
|
||||
26
src/Service/AbstractSingleton.php
Normal file
26
src/Service/AbstractSingleton.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* SingletonInterface.php@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/8/30
|
||||
*/
|
||||
|
||||
namespace Singularity\HDK\Core\Service;
|
||||
|
||||
use Dont\DontCallStatic;
|
||||
use Dont\DontClone;
|
||||
|
||||
/**
|
||||
* Singularity\HDK\Core\Service\SingletonInterface@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/8/30
|
||||
*/
|
||||
abstract class AbstractSingleton
|
||||
{
|
||||
use DontCallStatic;
|
||||
use DontClone;
|
||||
}
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -26,12 +26,14 @@ trait RestfulList
|
||||
|
||||
protected function restSelect(Closure $callback, ?Closure $filter = null)
|
||||
{
|
||||
$options = [];
|
||||
$result = $this->parseParameters(function ($query, $parsedOptions) use ($callback, &$options) {
|
||||
$options = $parsedOptions;
|
||||
$callback($query, $parsedOptions);
|
||||
});
|
||||
return $this->responseFormatter($options, $result, $filter);
|
||||
$parsed_options = [];
|
||||
$result = $this->parseParameters(
|
||||
callback: function ($query, $options) use ($callback, &$parsed_options) {
|
||||
$parsed_options = $options;
|
||||
return $callback($query, $options);
|
||||
}
|
||||
);
|
||||
return $this->responseFormatter($parsed_options, $result, $filter);
|
||||
}
|
||||
|
||||
protected function parseParameters(Closure $callback): mixed
|
||||
|
||||
@@ -12,9 +12,9 @@ namespace Singularity\HDK\Test\Core\Service;
|
||||
use Singularity\HDK\Core\Service\EmailService;
|
||||
use Symfony\Component\Mailer\Exception\TransportException;
|
||||
|
||||
$dsn = 'smtp://account@luxcreo.com:Qfsd8866@smtp-mail.outlook.com:587';
|
||||
$dsn = 'smtp://account@luxcreo.ai:Qfsd8866@smtp.qiye.aliyun.com:465';
|
||||
$mail_sender_name = 'LuxCreo';
|
||||
$mail_sender = 'account@LuxCreo.com';
|
||||
$mail_sender = 'account@luxcreo.ai';
|
||||
$email = new EmailService($dsn, $mail_sender_name, $mail_sender);
|
||||
|
||||
it('assertions that send HTML is available', function () use ($email) {
|
||||
@@ -26,7 +26,7 @@ it('assertions that send HTML is available', function () use ($email) {
|
||||
HTML
|
||||
);
|
||||
expect($result)->toBeTrue();
|
||||
})->only();
|
||||
});
|
||||
|
||||
it('assertions that send Text is available', function () use ($email) {
|
||||
$result = $email->sendText(
|
||||
|
||||
41
tests/Unit/RequestServiceTest.php
Normal file
41
tests/Unit/RequestServiceTest.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* RequestServiceTest.php@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/9/20
|
||||
*/
|
||||
|
||||
namespace Singularity\HDK\Test\Core\Unit;
|
||||
use Singularity\HDK\Core\Http\RequestService;
|
||||
use Singularity\HDK\Core\Http\RequestServiceFactory;
|
||||
|
||||
class RequestServiceTest
|
||||
{
|
||||
private RequestService $service;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->service = RequestServiceFactory::make();
|
||||
}
|
||||
|
||||
public function getInstance(): RequestService
|
||||
{
|
||||
return $this->service;
|
||||
}
|
||||
}
|
||||
|
||||
test('Http 请求服务可以正常使用', function () {
|
||||
/** @var RequestServiceTest $class */
|
||||
$class = \Hyperf\Support\make(RequestServiceTest::class);
|
||||
$response = $class->getInstance()->requestGet('http://baidu.com/');
|
||||
$content = $response->getBody()->getContents();
|
||||
expect($content)->toBe(<<<HTML
|
||||
<html>
|
||||
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
|
||||
</html>
|
||||
|
||||
HTML);
|
||||
});
|
||||
@@ -9,8 +9,29 @@ declare(strict_types=1);
|
||||
* @contact group@hyperf.io
|
||||
* @license https://github.com/hyperf/hyperf/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
use Hyperf\Context\ApplicationContext;
|
||||
use Hyperf\Di\Container;
|
||||
use Hyperf\Di\Definition\DefinitionSource;
|
||||
use Psr\Container\ContainerInterface;
|
||||
|
||||
ini_set('display_errors', 'on');
|
||||
ini_set('display_startup_errors', 'on');
|
||||
|
||||
error_reporting(E_ALL);
|
||||
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);
|
||||
|
||||
require BASE_PATH . '/vendor/autoload.php';
|
||||
Hyperf\Di\ClassLoader::init();
|
||||
|
||||
$container = new Container(new DefinitionSource([]));
|
||||
if (!$container instanceof ContainerInterface) {
|
||||
throw new RuntimeException('The dependency injection container is invalid.');
|
||||
}
|
||||
$container = ApplicationContext::setContainer($container);
|
||||
@@ -1,28 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* prepend.php@Core
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2023/8/29
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Hyperf\Context\ApplicationContext;
|
||||
use Hyperf\Di\ClassLoader;
|
||||
use Hyperf\Di\Container;
|
||||
use Hyperf\Di\Definition\DefinitionSourceFactory;
|
||||
|
||||
require_once __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
defined('BASE_PATH') or define('BASE_PATH', dirname(__DIR__, 1));
|
||||
|
||||
(function () {
|
||||
ClassLoader::init();
|
||||
|
||||
ApplicationContext::setContainer(
|
||||
new Container((new DefinitionSourceFactory())())
|
||||
);
|
||||
// $container->get(Hyperf\Contract\ApplicationInterface::class);
|
||||
})();
|
||||
Reference in New Issue
Block a user