Yii学习第26课:AR的生命周期之实例化

2025-04-18 00:01:31

个人感觉Yii2.0AR的生命周期是一个很重要的概念。当我们知道“它要干嘛,怎么干”的时候,我们就可以有效的“干预它,改造它”。用目前流行的一个名词叫“定制”。本文介绍一下AR的生命周期,希望对需要的朋友有所帮助。

工具/原料

LNMP/WAMP

浏览器

实例化

1、AR(Active Record),中文解释要“活动记录”,“一个 AR 类关联一张数据表, 每个 AR 对象对应表中的一行”。

Yii学习第26课:AR的生命周期之实例化

2、以默认首页(@app/controllers/SiteController.php)为例,实例化contactForm类:$obj髫潋啜缅ect = new ContactForm();我们在这里使用的ContactForm 继承的并非是“yii\db\ActiveRecord ”,而是“Model”但是我们还知道“Model 类也是更多高级模型如Active Record 活动记录的基类”,所以使用Model来查看RA的生命周期,效果是一样的。(其实是我有点懒,想用系统默认的代码,所以没有写,但是还是写了这么些文字来解释,呵呵)

Yii学习第26课:AR的生命周期之实例化

3、打开@app/models/ContactForm.php,重构代码:(1)public function __contruct(){}(2)public function _init(){}分别再“构造函数”和“init方法”中输入标记性代码:

Yii学习第26课:AR的生命周期之实例化

4、重新访问默认首页,查看效果会发现实例化的生命周期流程是:(1)先调用构造函数;(2)在执行init()方法。

Yii学习第26课:AR的生命周期之实例化

5、我们在追踪基类中“构造函数”的调用过程中,发现该构造函数会执行init()方法。所以假如我们修改__contruct()如下,会得到截然相反的结果:public function __contruct(){parent::__contruct();echo 'step:1';}

Yii学习第26课:AR的生命周期之实例化
Yii学习第26课:AR的生命周期之实例化
Yii学习第26课:AR的生命周期之实例化
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢