我有两种情况。
情景1:
在我的APP / Model / Behavior中编写的ProcessableBehavior需要在插件中使用另一个名为Queryable的行为中的函数。
如何从ProcessableBehavior中调用Queryable.Queryable函数doSomething?
情景2:
如果我编写一个现在包含ProcessableBehavior的Plugin Processable,所以这个行为依赖于Queryable.Queryable函数doSomething,我该如何进行调用?
答案 0 :(得分: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') {}