CakePHP:在某些模型方法之前执行代码

时间:2010-02-17 10:38:24

标签: php cakephp dry

现在我在我的模型中有几个方法,它们都在它们的开头(模型的父类)获取相同的对象。我想自动执行此操作并事先执行一些代码。

我想在调用方法getParentId(),getParentTable()和mayChange()之前说“执行fetchParent()”。

仅在初始化时设置此父对象或作为类变量,因为父级可以在运行时更改。

1 个答案:

答案 0 :(得分:0)

根据“某些方法”的含义,您可以使用Cake的本机回调。更多关于那些http://book.cakephp.org/view/76/Callback-Methods的人。但是,您似乎更有可能想要使用自定义方法的常用功能。如果是这种情况,那么我所做的就是创建自定义回调。为此,请在所需的模型中创建自定义回调。然后,在AppModel::your_method()中,测试该方法名称是否存在,如果存在,则执行它。

以下是我过去编写的一些示例代码:

# In AppModel::your_method()
if ( method_exists ( $model, 'your_custom_callback' ) ) {
  $model->your_custom_callback ( $model );
}

# In YourModel
public function your_custom_callback ( $model ) {
  /** Your custom code */
}

你没有提供太多细节,所以我不知道这是否能完全满足你的需求,但也许它至少会提供一个起点。