seata-php を開発するにはどうすればよいですか?この記事では、seata-php 開発ガイドについて説明し、前提知識について説明します。
この記事は主に、seata/seata-php の開発に参加するすべての人を支援し、前提条件の知識について説明することを目的としています。
seata/seata-php は現在、hyperf
フレームワークに基づいて開発された分散トランザクション コンポーネント パッケージであり、swoole
および ## と互換性があります。 #swow 2 つのコルーチン拡張機能。後続の開発者がこれら 2 つのコルーチン拡張機能との互換性も考慮できることを願っています
seata/seata-php開発に参加する前に、皆さんが次のことを理解しておく必要があります。##seata
# 根据自己实际情况来创建目录 mkdir ./seata-dev
# 根据自己实际情况来创建目录 cd ./seata-dev
# 根据自己实际情况来创建目录 git clone git@github.com:seata/seata-php.git
# swoole composer create-project hyperf/hyperf-skeleton # swow composer create-project hyperf/swow-skeleton # 使用 swow 扩展建议使用 hyperf3.0 版本 composer create-project hyperf/swow-skeleton:dev-master
composer.json
ファイルを変更し、次のコンテンツを追加する必要があります{ "require": { "hyperf/seata": "dev-master" }, "repositories": { "seata": { "type": "path", "url": "../seata-php" } } }
composer update を実行します-o
ディレクトリおよびプロジェクト ディレクトリ内。そしてコマンド
php bin/hyperf.php ベンダー:publis hyperf/seata を使用して、seata 設定ファイルを公開します
php bin/hyperf.php を使用しますstart プロジェクトを開始します
hyperf コンポーネント パッケージ開発に関するドキュメント
## について詳しく知ることができます。コンポーネント開発ガイド
ConfigProvider メカニズム
最後に、seata/seata-php プロジェクトがどのように開始されたかを説明しましょう
<?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/LIC */ namespace Hyperf\Seata\Listener; use Hyperf\DbConnection\Db; use Hyperf\Event\Contract\ListenerInterface; use Hyperf\Framework\Event\MainWorkerStart; use Hyperf\Seata\Annotation\GlobalTransactionScanner; use Hyperf\Seata\Rm\DataSource\DataSourceProxy; use Hyperf\Server\Event\MainCoroutineServerStart; class InitListener implements ListenerInterface { protected GlobalTransactionScanner $globalTransactionScanner; protected DataSourceProxy $dataSourceProxy; public function __construct(GlobalTransactionScanner $globalTransactionScanner, DataSourceProxy $dataSourceProxy) { $this->globalTransactionScanner = $globalTransactionScanner; $this->dataSourceProxy = $dataSourceProxy; } public function listen(): array { // 我们这里监听了下面两个事件,在 server 启动时候,则开始执行该监听器 return [ MainCoroutineServerStart::class, MainWorkerStart::class, ]; } public function process(object $event) { // Execute any sql to init the database connection Db::select('select 1'); // Init TM and RM clients // 这里则是开始初始化 TM 和 RM 的客户端 $this->globalTransactionScanner->initClients(); } }ログイン後にコピー最後に、
hyperf-ライフ サイクル イベントhyperf
のライフ サイクル ドキュメントを見てみましょう。推奨される学習: 「
PHP ビデオ チュートリアル 」 「
以上がSeata-php を開発するにはどうすればよいですか?開発ガイドの簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。