EasySwooleフレームワークHyperrfCommandへのアクセス
9469 ワード
倉庫住所
EasySwooleカスタムコマンドを試してみます
ファイルの作成
うんてん
かなり簡潔だと言わざるを得ない.
改造する
次に、コードの一部を改造し、EasySwooleにHyperrfのCommandを挿入しましょう.
EasysSwooleの動作モードは非常に簡単で、すべてのコマンドが
まずコンポーネントを作成します
コンポーネントに追加
次にルートディレクトリを変更する
CommandInterfaceの引き継ぎ
追加
最後にエントリ関数を改造する
命令実行
起動
HyperrfCommandの作成
次に、
修正
実行結果
最後に書く
HyperfSwoole 4.4+に基づく高性能・高柔軟性を実現するPHP連携フレームワークであり、連携サーバおよび多数の常用コンポーネントを内蔵し、従来のPHP-FPMに基づくフレームワークよりも性能が質的に向上し、超高性能を提供するとともに、極めて柔軟な拡張性を保ち、標準コンポーネントはPSR標準に基づいて実現され、強い依存注入設計に基づいている.ほとんどのコンポーネントまたはクラスが置換可能で多重化可能であることを保証します.
フレームワークコンポーネントライブラリには、一般的なスレッド版のMySQLクライアント、Redisクライアントのほか、スレッド版のEloquent ORM、WebSocketサービス側およびクライアント、JSON RPCサービス側およびクライアント、GRPCサービス側およびクライアント、Zipkin/Jaegerクライアント、Guzzle HTTPクライアント、Elasticsearchクライアント、Consulクライアント、ETCDクライアント、AMQPコンポーネント、Apolloコンフィギュレーションセンター、アリクラウドACMアプリケーションコンフィギュレーション管理、ETCDコンフィギュレーションセンター、トークンバケツアルゴリズムに基づくストッパ、汎用接続プール、ヒューズ、Swaggerドキュメント生成、Swoole Tracker、BladeおよびSmartyビューエンジン、SnowflakeグローバルIDジェネレータなどのコンポーネントは、自分で対応するスレッドバージョンを実現する手間を省く.
Hyperrfは、PSR-11ベースの依存注入コンテナ、注釈、AOPフェースプログラミング、PSR-15ベースのミドルウェア、カスタムプロセス、PSR-14ベースのイベントマネージャ、Redis/RabbitMQメッセージキュー、自動モデルキャッシュ、PSR-16ベースのキャッシュ、Crontab秒レベルのタイミングタスク、Translation国際化、Validationベリファイアなど、非常に便利な機能を提供しています.豊富なテクノロジーシーンとビジネスシーンを満たし、開梱してすぐに使用できます.
EasySwooleカスタムコマンドを試してみます
ファイルの作成
うんてん
$ php easyswoole
______ _____ _
| ____| / ____| | |
| |__ __ _ ___ _ _ | (___ __ __ ___ ___ | | ___
| __| / _` | / __| | | | | \___ \ \ \ /\ / / / _ \ / _ \ | | / _ \
| |____ | (_| | \__ \ | |_| | ____) | \ V V / | (_) | | (_) | | | | __/
|______| \__,_| |___/ \__, | |_____/ \_/\_/ \___/ \___/ |_| \___|
__/ |
|___/
Welcome To EASYSWOOLE Command Console!
Usage: php easyswoole [command] [arg]
Get help : php easyswoole help [command]
Current Register Command:
demo:command
help
install
start
stop
reload
phpunit
$ php easyswoole demo:command
string(11) "Hello World"
success
かなり簡潔だと言わざるを得ない.
改造する
次に、コードの一部を改造し、EasySwooleにHyperrfのCommandを挿入しましょう.
EasysSwooleの動作モードは非常に簡単で、すべてのコマンドが
CommandContainer
に保存されているので、エントリファイルを大きく修正して、その中のコマンドをすべて調べて、動的にHyperfCommand
に翻訳して、そのままHyperfCommand
を実行すればいいです.easyswoole
コマンドラインと衝突しないように、新規hyperf
を作成します.まずコンポーネントを作成します
$ composer create hyperf/component-creater hyperf
Installing hyperf/component-creater (v1.1.1)
- Installing hyperf/component-creater (v1.1.1): Downloading (100%)
Created project in hyperf
> Installer\Script::install
Setting up optional packages
What is your component name (hyperf/demo): hyperf-cloud/easyswoole-command
What is your component license (MIT) :
What is your component description : HyperfCommand for EasySwoole
What is your namespace (HyperfCloud\EasyswooleCommand):
Removing installer development dependencies
Do you want to use hyperf/framework component ?
[1] yes
[n] None of the above
Make your selection or type a composer package name and version (n):
Do you want to use hyperf/di component ?
[1] yes
[n] None of the above
Make your selection or type a composer package name and version (n):
...
コンポーネントに追加
"hyperf/command": "1.1.*"
依存.次にルートディレクトリを変更する
composer.json
{
"require": {
"easyswoole/easyswoole": "3.x",
"hyperf-cloud/easyswoole-command": "dev-master"
},
"require-dev": {
"swoft/swoole-ide-helper": "^4.2",
"friendsofphp/php-cs-fixer": "^2.14",
"mockery/mockery": "^1.0",
"phpstan/phpstan": "^0.11.2"
},
"autoload": {
"psr-4": {
"App\\": "App/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"config": {
"sort-packages": true
},
"scripts": {
"test": "co-phpunit -c phpunit.xml --colors=always",
"cs-fix": "php-cs-fixer fix $1",
"analyse": "phpstan analyse --memory-limit 300M -l 0 -c phpstan.neon ./App"
},
"repositories": {
"hyperf": {
"type": "path",
"url": "./hyperf"
},
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer"
}
}
}
CommandInterfaceの引き継ぎ
EasySwooleCommand
すべてを引き継ぐCommandInterface
を作成しましょう.commandName());
$this->command = $command;
}
public function configure()
{
$this->addOption('args', 'a', InputOption::VALUE_IS_ARRAY | InputOption::VALUE_OPTIONAL, 'EasySwoole ', []);
}
public function handle()
{
$args = $this->input->getOption('args');
if (in_array('produce', $args)) {
Core::getInstance()->setIsDev(false);
}
Core::getInstance()->initialize();
$result = $this->command->exec($args);
$this->output->success($result);
}
}
追加
Application
すべて初期化CommandContainer
のうちCommand
.getCommandList();
foreach ($list as $name) {
$this->commands[] = new EasySwooleCommand($container->get($name));
}
}
public function add(Command $command)
{
$this->commands[] = $command;
}
public function run()
{
$application = new SymfonyApplication();
foreach ($this->commands as $command) {
$application->add($command);
}
return $application->run();
}
}
最後にエントリ関数を改造する
");
}
// CommandContainer
CommandRunner::getInstance();
if (file_exists(EASYSWOOLE_ROOT . '/bootstrap.php')) {
require_once EASYSWOOLE_ROOT . '/bootstrap.php';
}
Application::getInstance()-?>run();
命令実行
demo:command
$ php hyperf.php demo:command
string(11) "Hello World"
[OK] success
起動
Server
$ php hyperf.php start -a produce
HyperrfCommandの作成
次に、
HyperfCommand
効果を見てみましょう.
修正
bootstrap.php
set(new DemoCommand());
Application::getInstance()->add(new Demo2Command());
実行結果
$ php hyperf.php demo:command2
string(21) "Hello Hyperf Command."
最後に書く
HyperfSwoole 4.4+に基づく高性能・高柔軟性を実現するPHP連携フレームワークであり、連携サーバおよび多数の常用コンポーネントを内蔵し、従来のPHP-FPMに基づくフレームワークよりも性能が質的に向上し、超高性能を提供するとともに、極めて柔軟な拡張性を保ち、標準コンポーネントはPSR標準に基づいて実現され、強い依存注入設計に基づいている.ほとんどのコンポーネントまたはクラスが置換可能で多重化可能であることを保証します.
フレームワークコンポーネントライブラリには、一般的なスレッド版のMySQLクライアント、Redisクライアントのほか、スレッド版のEloquent ORM、WebSocketサービス側およびクライアント、JSON RPCサービス側およびクライアント、GRPCサービス側およびクライアント、Zipkin/Jaegerクライアント、Guzzle HTTPクライアント、Elasticsearchクライアント、Consulクライアント、ETCDクライアント、AMQPコンポーネント、Apolloコンフィギュレーションセンター、アリクラウドACMアプリケーションコンフィギュレーション管理、ETCDコンフィギュレーションセンター、トークンバケツアルゴリズムに基づくストッパ、汎用接続プール、ヒューズ、Swaggerドキュメント生成、Swoole Tracker、BladeおよびSmartyビューエンジン、SnowflakeグローバルIDジェネレータなどのコンポーネントは、自分で対応するスレッドバージョンを実現する手間を省く.
Hyperrfは、PSR-11ベースの依存注入コンテナ、注釈、AOPフェースプログラミング、PSR-15ベースのミドルウェア、カスタムプロセス、PSR-14ベースのイベントマネージャ、Redis/RabbitMQメッセージキュー、自動モデルキャッシュ、PSR-16ベースのキャッシュ、Crontab秒レベルのタイミングタスク、Translation国際化、Validationベリファイアなど、非常に便利な機能を提供しています.豊富なテクノロジーシーンとビジネスシーンを満たし、開梱してすぐに使用できます.