阿江 2017-09-30 15:54:00 2474次浏览 0条回复 0 0 0

说明

学习Yii Framework 2易2框架的过程是漫长的也是充满乐趣的以下是我学习Yii2框架时对官网英文资料(请参见原文网址)的翻译和代码实现提供了较完整的代码供你参考不妥之处请多多指正

原文网址:

http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#ar-life-cycles
7、Active Record Life Cycles(AR的生命周期)

本文主题:AR的生命周期(Active Record Life Cycles)

7、AR的生命周期(Active Record Life Cycles)

当Actie Record在不同场合应用时,理解它的生命周期将是非常重要的事情。在每个生命周期,方法将按照一个特定的顺序去执行,如果你需要自定义这个生命周期,可以重写这些方法。在生命周期中,特定Active Record事件被触发时你可以添加自定义代码。当你开发Active Record行为时,这些事件将非常有用,这样就可以实现Active Record生命周期的自定义了。

接下来,我们将汇总Active Record生命周期的各种情况,以及在生命周期中要执行的方法或事件。

//------------------- //创建对象生命周期(New Instance Life Cycle) 当使用new操作符创建一个新的Active Record实例时,将发生以下生命周期: 1)类构造器 2)init():触发EVENT_INIT事件

//------------------- //查询数据生命周期(Querying Data Life Cycle) 当使用查询方法查询数据时,每个向Active Record填充数据的过程都会经历以下生命周期: 1)类构造器 2)init():触发EVENT_INIT事件 3)afterFind():触发EVENT_AFTER_FIND事件

//------------------- //存储数据生命周期(Saving Data Life Cycle) 当调用save()插入或更新一个Active Record实例时,将发生以下生命周期: 1)EVENT_BEFORE_VALIDATE事件,如果此方法返回值为false或yii\base\ModelEvent::$isValid 为false,后续步骤将都不再执行。 2)执行数据验证,如果数据验证失败,第3步以后的步骤将被忽略。 3)EVENT_AFTER_VALIDATE事件。 4)EVENT_BEFORE_INSERT或VENT_BEFORE_UPDATE事件。如果此方法返回false或yii\base\ModelEvent::$isValid 是false,后续步骤将被忽略。 5)执行实际的数据插入或更新。 6)EVENT_AFTER_INSERT或EVENT_AFTER_UPDATE事件。

//------------------- //删除数据生命周期(Deleting Data Life Cycle) 当调用delete()删除一个Active Record实例时,将发生以下生命周期: 1)EVENT_BEFORE_DELETE事件,如果此方法返回false或yii\base\ModelEvent::$isValid 值为false,后续步骤将被忽略。 2)执行实际的数据删除操作。 3)EVENT_AFTER_DELETE事件

注意:调用以下方法时将不会执行任何生命周期,因为它们是直接对数据库进行操作且不是基于Active Record的: yii\db\ActiveRecord::updateAll() yii\db\ActiveRecord::deleteAll() yii\db\ActiveRecord::updateCounters() yii\db\ActiveRecord::updateAllCounters()

//------------------- //更新数据生命周期(Refreshing Data Life Cycle) 当调用refresh()刷新Active Record实例时,如果刷新成功并返回true时将触发EVENT_AFTER_REFRESH事件。

//AR相关的其他事件: afterFind(), beforeValidate(), afterValidate(), beforeSave(), afterSave(), beforeDelete(), afterDelete()

(全文完)

    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册