thinkphp和php的关系,thinkphp _initialize 和 __construct函数的关系

这篇博客探讨了ThinkPHP框架中的_initialize()函数与PHP原生的__construct()构造函数之间的异同。虽然它们在功能上相似,但当同时存在时,_initialize()不会自动运行,需要通过parent::_initialize()显式调用。而__construct()在子类中会被自动继承并执行。总结了如何在两者之间选择和使用,强调了它们在继承和调用机制上的差异。
摘要由CSDN通过智能技术生成

thinkphp 框架的 _initialize() 函数 和 php 原生的 __construct() 构造函数并没有什么本质上的区别,你完全可以把 _initialize() 作为 __construct() 的别名函数来用,但当你有编写 __construct() 构造函数时 _initialize() 函数就会无效化

php 的 __construct() 函数会被子类继承, 且被子类隐式调用

class Obj {

public function __construct() {

echo __METHOD__ . "
";

}

}

class Person extends Obj {

public function __construct() {

// 调用父类构造函数

parent::__construct();

echo __METHOD__ . "
";

}

}

$person = new Person();

?>

当子类中无 __construct() 构造函数的定义时则执行父类的构造函数

当子类中定义了(可以理解为重写)__construct() 则执行子类自身的构造函数,但可以通过 parent::__construct() 调用父类的构造函数

thinkphp 的 _initialize() 函数有着同样的机理

1、当父类中存在 _initialize() 时会被子类继承 且在子类被实例化时运行

2、当子类中存在 _initialize() 时父类的 _initialize() 不会自动运行,如果需要可使用 parent::_initialize()调用

所以 __construct() 和  _initilize() 你可以二者选其一,当然如果你写了 __construct() 时本类的 _initialize() 就会失效了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值