1

2つのシナリオがあります。

シナリオ1:

APP / Model / Behaviorで記述されたProcessableBehaviorは、プラグインでQueryableと呼ばれる別のBehavior内の関数を使用する必要があります。

ProcessableBehavior内からQueryable.Queryable関数doSomethingを呼び出すにはどうすればよいですか?

シナリオ2:

ProcessableBehaviorを含むプラグインProcessableを作成し、この動作がQueryable.Queryable関数doSomethingに依存する場合、呼び出しを行うにはどうすればよいですか?

4

1 に答える 1

3

ビヘイビアーの内部では、いつでもモデルメソッドを呼び出すことができます。アタッチされたビヘイビアはそのように動作するため、モデルの一部であるため、それらを呼び出すことができるはずです。

// behavior 1
public function myFirstBehaviorMethod(Model $Model) {
    // do sth
}

// behavior 2
public function mySecondBehaviorMethod(Model $Model) {
     $Model->myFirstBehaviorMethod($foo, $bar);
}

基本的な考え方は、彼らが必ずしも他のことを知る必要はないということです。あなたはそれらがモデルの一部であると仮定するだけです(振る舞いがモデルの機能を豊かにするので)。

$ Modelオブジェクトは内部的に使用されるため、$Modelオブジェクトを渡す必要はないことに注意してください。

正しい順序で取り付け/ロードしてください。一方が他方に依存している場合は、setup()などで確認できます。

// throw exception if not available
if (!$Model->Behaviors->attached('Queryable') {}
于 2013-02-19T11:55:18.937 に答える