我正在尝试在控制器内使用自动完成功能来处理具有行为的模型。
和:
/** @var ModelName **/
public $ModelName;
它只是自动完成 ModelName 中的任何内容,并且:
/** @var BehaviorNameBehavior **/
public $ModelName;
只是自动完成 BehaviorNameBehavior 中的任何内容,但我认为这有点明显。我查看了 PHPdoc 文档,但没有看到任何将两个类指定给变量的方法。
还有一个问题是,在 CakePHP 中,行为函数的第一个参数始终是 (Model $model),但是该参数是在 CakePHP 框架内部指定的,并且在调用控制器/模型中的函数时不包括在内。
有没有人能够得到这个工作?
编辑:添加示例
class ModelName extends AppModel {
public $actsAs = array("BehaviorName");
public function someModelFunction() {}
}
class BehaviorNameBehavior extends ModelBehavior {
public function someBehaviorFunction(Model $model, $param) {}
}
class ControllerNameController extends AppController {
/** @var BehaviorNameBehavior|ModelName $ModelName */
public $uses = array("ModelName");
public function someAction() {
// Type hinting here thinks model should be first parameter but that's not how CakePHP works
$this->ModelName->someBehaviorFunction("some param value");
}
}