PHP Codeigniter – parent :: __ construct

Получая унаследованный от родительского класса в PHP, особенно в Codeigniter, что делает parent::__construct or parent::model() ?

Как бы это изменилось, если я не __construct родительский класс? И, какой способ предлагается?

-Added-

Основное внимание уделяется Codeigniter конкретным в отношении вызова parent::__construct по-разному в зависимости от версий, а также, если это можно опустить в случае, если Codeigniter сделает это автоматически.

Это обычный конструктор классов. Давайте посмотрим на следующий пример:

 class A { protected $some_var; function __construct() { $this->some_var = 'value added in class A'; } function echo_some_var() { echo $this->some_var; } } class B extends A { function __construct() { $this->some_var = 'value added in class B'; } } $a = new A; $a->echo_some_var(); // will print out 'value added in class A' $b = new B; $b->echo_some_var(); // will print out 'value added in class B' 

Как вы видите, класс B наследует все значения и функции от A. Таким образом, член класса $some_var доступен из A, а также из B. Поскольку мы добавили конструктор в класс B, конструктор класса A НЕ будет использоваться когда вы создаете новый объект класса B.

Теперь рассмотрим следующие примеры:

 class C extends A { // empty } $c = new C; $c->echo_some_var(); // will print out 'value added in class A' 

Как вы можете видеть, поскольку мы не объявили конструктор, конструктор класса A используется неявно. Но мы также можем сделать следующее, что эквивалентно классу C:

 class D extends A { function __construct() { parent::__construct(); } } $d = new D; $d->echo_some_var(); // will print out 'value added in class A' 

Поэтому вам нужно использовать только строку parent::__construct(); когда вы хотите, чтобы конструктор в дочернем классе сделал что-то, И выполните родительский конструктор. Пример:

 class E extends A { private $some_other_var; function __construct() { // first do something important $this->some_other_var = 'some other value'; // then execute the parent constructor anyway parent::__construct(); } } 

Более подробную информацию можно найти здесь: http://php.net/manual/en/language.oop5.php

что делает parent :: __ construct или parent :: model ()?

эти функции выполняют точно то же самое, только функция construct, которая была названа в честь самого класса до PHP5. Я говорю в вашем примере, что вы расширяете класс Model (и в какой-то более старой версии CI, поскольку вам не нужно использовать CI_model), если я прав в этом __construct, это то же самое, что и model ().