tp5的钩子函数

刚从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中的模型钩子函数,请高手赐教

我一般是写一个基础的增删改查的基类模型处理通用业务,然后子类使用重写上面钩子方法而处理差异业务.所有继承该基类的自动就有了增删改查功能,不用写任何代码.因为增删改查一般都有权限,所以在基类中的构造函数中增加了一个判断登录的通用方法,和一个判断权限的抽象方法.

阅读 6k
1 个回答

tp5.0 注册的回调方法支持传入一个参数(当前的模型对象实例)

class Role extends Model {
    protected static function init() {
        self::event('before_insert', function ($role) {
            // dump($role);
            return false;
        });
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进