検索
ホームページPHPフレームワークThinkPHPThinkPHP6 イベントと複数のアプリケーション

ThinkPHP6 イベントと複数のアプリケーション

May 08, 2020 am 10:14 AM
phptptp6イベント

イベント

1. イベントは、より詳細なビジネス シナリオをより正確に特定できる点を除いて、ミドルウェアに似ています。

2. イベントは次のように定義できます。イベント クラス、イベント リスニング クラス、イベント サブスクリプション クラス;

3. まず、テスト イベント クラス TestEvent.php を作成し、手動でテスト クラスを作成します;

public function __construct()
{
//注册监听器
Event::listen('TestListen', function ($param) {
echo '我是监听器,我被触发了!'.$param;
});
}
public function info()
{
echo '登录前准备!';
Event::trigger('TestListen', 'ok'); //触发监听器
event('TestListen'); //助手函数触发
}

4. また、あなたもリスニング クラスを使用してリスナーを設計し、コマンド ラインを使用してリスナーを作成できます。

php think make:listener TestListen
public function info()
{
echo '登录前准备!';
Event::listen('TestListen', TestListen::class); //这句可以定义到配置文件
Event::trigger('TestListen');
}

5. app/event.php で、listen はリスニング クラスをリッスンするように設定されています。設定方法は次のとおりです。

'listen' => [
'TestListen' => [\app\listener\TestListen::class]
],

6 . リスニング クラスがトリガーされると、自動的に handle() メソッドが実行され、リスニング関数が実装されます;

public function handle($event)
{
echo '我是监听类!'.$event;
}

7. システムには、システム トリガー機能も組み込まれています。条件が満たされる限り自動的にトリガーされるイベント。

ThinkPHP6 イベントと複数のアプリケーション

イベント説明パラメーター AppInit アプリケーション初期化タグ ビット なし HttpRun アプリケーション開始タグ ビット なし HttpEnd アプリケーション終了タグ ビット 現在応答オブジェクト インスタンス LogWrite ログ書き込みメソッド タグ ビット 現在書き込まれているログ情報 RouteLoaded ルート読み込み完了 なし

8. イベント リスニング クラスは、識別子にバインドされている限り、複数のリスニング クラスを同時に監視できます。

'TestListen' => [
\app\listener\TestListen::class,
\app\listener\TestOne::class,
\app\listener\TestTwo::class
]

9. 複数のモニタリングが必要な場合、リスニング クラスは十分な柔軟性がありません。また、多数のクラスが作成されるため、サブスクリプション クラスを使用できます;

10.サブスクリプション クラスは、on メソッド名を使用してイベントを内部メソッドとして監視します;

php think make:subscribe UserSub
class UserSub
{
public function onUserLogin(){
echo '处理登录后的监听!';
}
public function onUserLogout(){
echo '处理退出后的监听!';
}
}

11。次に、app/event.php に直接登録します;

'subscribe' => [
'UserSub' => \app\subscribe\UserSub::class,
],

12。 2 つのメソッドはそれぞれ 2 つのイベント メソッドをリッスンし、メソッド名を直接呼び出すだけです;

public function login(){
echo '登录成功!';
Event::trigger('UserLogin');
}
public function logout(){
echo '退出成功!';
Event::trigger('UserLogout');
}

13. イベント クラスの場合、これを使用する必要があるシナリオはほとんどありません。システムは多くの正確なソリューションを提供します;

php think make:event UserEvent
class UserEvent
{
public function __construct()
{
echo '我是事件类!';
}
}
Event::trigger(new UserEvent());

マルチアプリケーション モード

1. マルチアプリケーション モードは拡張機能であるため、追加のインストールが必要です;

composer require topthink/think-multi-app

2. インストール後、index と admin という 2 つのアプリケーション ディレクトリ フォルダーを作成します;

3. コントローラーとモデルを移動し、対応する名前空間を変更するだけです;

4. 追加します。 2 つのアプリケーション ディレクトリ フォルダー (index と admin) をビューに追加し、対応するフォルダーに移動します;

5. デフォルトのアプリケーションは Index であり、app.php で変更できます;

// 默认应用
'default_app' => 'index',

6. 管理ディレクトリをマッピングするなどのアプリケーション マッピングを行うことができ、管理者は放棄されます;

// 应用映射(自动多应用模式有效)
'app_map' => [
'think' => 'admin'
],

7. また、バックグラウンドでドメイン名バインディングを使用するなど、ドメイン名バインディングも行うことができます。直接アクセス;

// 域名绑定(自动多应用模式有效)
'domain_bind' => [
'news.abc.com' => 'admin',
'*' => 'index'
],

8. ルートの変更: ルートはアプリケーション ディレクトリに別途確立する必要があり、内部コーディングを変更する必要はありません;

推奨チュートリアル: "ThinkPHP チュートリアル"

以上がThinkPHP6 イベントと複数のアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はzhihuで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
ThinkPHPの組み込みテストフレームワークの主な機能は何ですか?ThinkPHPの組み込みテストフレームワークの主な機能は何ですか?Mar 18, 2025 pm 05:01 PM

この記事では、ThinkPHPの組み込みテストフレームワークについて説明し、ユニットや統合テストなどの主要な機能と、早期のバグ検出とコード品質の向上を通じてアプリケーションの信頼性を高める方法について強調しています。

リアルタイムの株式市場データフィードを構築するためにThinkPhpを使用する方法は?リアルタイムの株式市場データフィードを構築するためにThinkPhpを使用する方法は?Mar 18, 2025 pm 04:57 PM

記事では、リアルタイムの株式市場データフィードにThinkPhpを使用して、セットアップ、データの正確性、最適化、セキュリティ対策に焦点を当てて説明します。

サーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項は何ですか?サーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項は何ですか?Mar 18, 2025 pm 04:54 PM

この記事では、パフォーマンスの最適化、ステートレス設計、セキュリティに焦点を当てたサーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項について説明します。コスト効率やスケーラビリティなどの利点を強調しますが、課題にも対処します

ThinkPhpマイクロサービスでサービスの発見と負荷分散を実装する方法は?ThinkPhpマイクロサービスでサービスの発見と負荷分散を実装する方法は?Mar 18, 2025 pm 04:51 PM

この記事では、セットアップ、ベストプラクティス、統合方法、および推奨ツールに焦点を当てたThinkPhpマイクロサービスにサービスの発見と負荷分散の実装について説明します。[159文字]。

ThinkPhpの依存関係噴射コンテナの高度な機能は何ですか?ThinkPhpの依存関係噴射コンテナの高度な機能は何ですか?Mar 18, 2025 pm 04:50 PM

ThinkPHPのIOCコンテナは、PHPアプリで効率的な依存関係管理のための怠zyなロード、コンテキストバインディング、メソッドインジェクションなどの高度な機能を提供します。

リアルタイムのコラボレーションツールを構築するためにThinkPhpを使用する方法は?リアルタイムのコラボレーションツールを構築するためにThinkPhpを使用する方法は?Mar 18, 2025 pm 04:49 PM

この記事では、ThinkPhpを使用してリアルタイムのコラボレーションツールを構築し、セットアップ、Websocket統合、セキュリティベストプラクティスに焦点を当てて説明します。

SaaSアプリケーションを構築するためにThinkPhpを使用することの主な利点は何ですか?SaaSアプリケーションを構築するためにThinkPhpを使用することの主な利点は何ですか?Mar 18, 2025 pm 04:46 PM

ThinkPhpは、軽量のデザイン、MVCアーキテクチャ、および拡張性を備えたSaaSアプリに利益をもたらします。スケーラビリティを向上させ、開発を速め、さまざまな機能を通じてセキュリティを改善します。

ThinkPhpとRabbitmqを使用して分散タスクキューシステムを構築する方法は?ThinkPhpとRabbitmqを使用して分散タスクキューシステムを構築する方法は?Mar 18, 2025 pm 04:45 PM

この記事では、ThinkPhpとRabbitMQを使用して分散タスクキューシステムの構築を概説し、インストール、構成、タスク管理、およびスケーラビリティに焦点を当てています。重要な問題には、Immedのような一般的な落とし穴を避けるための高可用性の確保が含まれます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール