zoukankan      html  css  js  c++  java
  • 模型事件

    模型事件

    版本新增功能
    5.0.4 增加模型事件注册快捷方法

    模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的save方法和delete方法。

    模型事件只可以在调用模型的方法才能生效,使用查询构造器通过Db类操作是无效的

    模型类支持before_deleteafter_deletebefore_writeafter_writebefore_updateafter_updatebefore_insertafter_insert事件行为

    标签位描述
    before_insert 新增前
    after_insert 新增后
    before_update 更新前
    after_update 更新后
    before_write 写入前
    after_write 写入后
    before_delete 删除前
    after_delete 删除后

    使用方法如下:

    User::event('before_insert', function($user){
                if ($user->status != 1) {
                    returnfalse;
                }
            });

    注册的回调方法支持传入一个参数(当前的模型对象实例),并且before_writebefore_insert before_update before_delete事件方法如果返回false,则不会继续执行。

    支持给一个位置注册多个回调方法,例如:

            User::event('before_insert', function($user){
                if ($user->status != 1) {
                    returnfalse;
                }
            });
            // 注册回调到beforeInsert函数
            User::event('before_insert', 'beforeInsert');

    可以在模型类的init方法里面统一注册模型事件,例如:

    namespaceappindexmodel;
    
    usethinkModel;
    
    classUserextendsModel
    {
        protectedstaticfunctioninit()
    {
            User::event('before_insert', function($user){
                if ($user->status != 1) {
                    returnfalse;
                }
            });
        }
    }

    调用当前模型也可以写入 self::event('before_insert', ...)

    快捷注册(V5.0.4+

    V5.0.4+版本开始,系统提供了内置的事件注册的快捷方法,你可以用下面的方式替代

    namespaceappindexmodel;
    
    usethinkModel;
    
    classUserextendsModel
    {
        protectedstaticfunctioninit()
    {
            User::beforeInsert(function($user){
                if ($user->status != 1) {
                    returnfalse;
                }
            });
        }
    }

    这些模型类的快捷方法如下:

    标签位描述
    beforeInsert 新增前
    afterInsert 新增后
    beforeUpdate 更新前
    afterUpdate 更新后
    beforeWrite 写入前
    afterWrite 写入后
    beforeDelete 删除前
    afterDelete 删除后
  • 相关阅读:
    设计模式之解释器
    mina学习
    我的学习网站(个人)
    jq实现剪裁图片设置为头像
    元素跟随着滚动条运动
    解决鼠标滚动的时候多次执行函数
    利用随机数生成一个简单的验证码
    自定义单选框或者复选框
    jquery实现旋转木马的插件slick
    js判断页面是pc打开还是手机打开
  • 原文地址:https://www.cnblogs.com/q1104460935/p/6916233.html
Copyright © 2011-2022 走看看