個人的に、Yii で最も理解しにくいのはイベントと動作です。これは、概念が理解しにくいだけでなく、アプリケーションのシナリオも理解しにくく、イベントや動作を開発にいつ使用する必要があるかが明確ではないためです。
#イベント
イベント モデルは、デザイン パターンにおける「オブザーバー パターン」です。オブジェクト 状態が変化すると、このオブジェクトは他のオブジェクトにイベントを通知できます。イベント モデルを使用するには、次の 3 つの手順が必要です: (推奨される学習: yii フレーム ) ## 1、イベントを定義します。2 . イベントハンドルを登録; 3. イベントをトリガーします。
なぜこれら 3 つの手順を実行する必要があるのでしょうか? PHP 自体は、その実行プロセスが手続き型で実行されないため、
Yii のイベントトリガーメカニズムは、ActionScript 3 のようなイベントを直接トリガーしません。
Yii はイベントを Yii::app() の実行プロセスにバインドするため、Yii のイベントの概念は js のイベントの概念に似ているという人もいます。
Behaviorここではまず、なぜ Behavior を使用する必要があるのかをもう一度説明します。
クラスに機能を追加するには 2 つの方法があります:1. このクラスのコードを直接変更し、いくつかのメンバー関数とメンバー変数を追加します。
2. サブクラスを通じて派生および拡張します。 明らかに 2 番目の方法の方が保守と拡張が簡単です。ただし、複数の機能を 1 つのクラスに追加する必要がある場合 (複数の人が異なる時間に)、マルチレベルの派生が必要となり、明らかにメンテナンス コストが増加します。 Yii では、動作クラス バインディングを通じて、コンポーネントは CBeavior クラスの 1 つ以上のメンバー メソッドとメンバー変数をそれ自体に追加し、不要な場合は一部の CBeavior クラスをアンロードします。 同時に、CBeavior::events メソッドをオーバーライドして、ターゲット クラスへの複数のイベント バインディングを実現できます。これらのイベントは、現在の動作がターゲット クラスにバインドされるときに一緒にバインドされます。Yii2 イベントと動作の概要
1) イベントは、特定の時点でプリセットされたコードの実行をトリガーするために使用されます。イベント クラス、すべて yii\base\Component から継承されます。
2) ビヘイビアーはクラスを補足するために使用されます。ビヘイビアーをクラスにバインドすることにより、クラス自体がこれらのプロパティとメソッドを持つのと同じように、クラスはビヘイビアー自体によって定義されたプロパティとメソッドを持つことができます。 また、既存のクラスを継承したり、既存のクラスを含めたりするために新しいクラスを作成する必要はありません。以上がyii イベントと動作の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。