В чем разница между методами init () и __construct () в Yii2

Метод init() :

 public function init() { } 

Метод __construct() :

 public function __construct() { } 

Итак, в чем разница между ними и какой должна быть использована?

init() – это метод любого объекта, который простирается от yii\base\Object (и большинство объектов простирается от него).

Из официальных документов:

Помимо свойства свойства, Object также вводит важный жизненный цикл инициализации объекта. В частности, создание нового экземпляра объекта или его производного класса будет включать следующие жизненные циклы последовательно:

  1. вызывается конструктор класса;
  2. свойства объекта инициализируются в соответствии с данной конфигурацией;
  3. вызывается метод init ().

В приведенном выше примере оба этапа 2 и 3 встречаются в конце конструктора классов. Рекомендуется инициализировать объект в методе init (), потому что на этом этапе уже применяется настройка объекта.

Рекомендуется использовать init() , вы даже можете увидеть его из исходного кода и расширений, но в некоторых случаях вы можете использовать __construct() . Есть несколько рекомендаций по реализации этого, вы можете найти его на одной странице в официальных документах здесь .

__constuct – это родная функция языка PHP, вы можете прочитать дополнительную информацию об этом в официальных документах PHP в этом разделе .