Yii2中的init()和__construct()方法有什么区别?


What's the difference between init() and __construct() methods in Yii2

init() method:

public function init()
{
}

__construct()法:

public function __construct()
{
}

那么,它们之间的区别是什么,应该使用哪个?

init()是任何从yii'base'Object扩展的对象的方法(大多数对象都是从它扩展的)。

来自官方文档:

除了属性特性,Object还引入了一个重要的对象初始化生命周期。特别是,创建一个新的对象或其派生类的实例将涉及以下内容生命周期顺序:

  1. 类构造函数被调用;
  2. 对象属性根据给定配置初始化;
  3. init()方法被调用。

在上面的例子中,步骤2和步骤3都发生在课程的最后构造函数。建议执行对象初始化操作在init()方法中,因为在那个阶段,对象配置

建议使用init(),您甚至可以从源代码和扩展中看到它,但在某些情况下,您可以使用__construct()。这里有一些建议来实现它,你可以在这里的官方文档的同一页面找到它。

__constuct是一个本地的PHP语言特性,你可以在PHP官方文档中阅读更多的信息。