刚从tp3.2升级到tp5
过去在模型类中,经常用到
// 插入数据前的回调方法
protected function _before_insert(&$data,$options) {}
// 插入成功后的回调方法
protected function _after_insert($data,$options) {}
// 更新数据前的回调方法
protected function _before_update(&$data,$options) {}
// 更新成功后的回调方法
protected function _after_update($data,$options) {}
// 删除数据前的回调方法
protected function _before_delete($options) {}
// 删除成功后的回调方法
protected function _after_delete($data,$options) {}
习惯了写一个增删改查的基础类,然后使用上面的函数处理差异的业务.
但是在tp5中没有相应的函数了
从手册中查可以使用如下方式实现
class Base extends Model
{
protected static function init()
{
Base::event('before_insert', 'beforeInsert');
Base::event('after_insert', 'afterInsert');
}
}
但是这样的话从哪里传递数据的参数了,如tp3protected function _after_delete($data,$options) {}中的$data和$options了?
在TP5中改如何TP3.2中的模型钩子函数,请高手赐教
我一般是写一个基础的增删改查的基类模型处理通用业务,然后子类使用重写上面钩子方法而处理差异业务.所有继承该基类的自动就有了增删改查功能,不用写任何代码.因为增删改查一般都有权限,所以在基类中的构造函数中增加了一个判断登录的通用方法,和一个判断权限的抽象方法.
tp5.0 注册的回调方法支持传入一个参数(当前的模型对象实例)