2015-08-06 5 views
1

Может ли кто-нибудь сказать мне, почему конструктор в коде контроллера использует parent :: __ construct? Я знаю только потому, что это использовать метод в родительском классе, который находится внутри CI_Controller. Если да, то почему конструктор в коде модели не использует parent :: __ construct?constructor - CodeIgniter

class News extends CI_Controller 
{ 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('news_model'); 
} 



class News_model extends CI_Model 
{ 
public function __construct() 
{ 
    $this->load->database(); 
} 
+0

Вам нужно вызвать конструктор родителя, потому что, если вы этого не сделаете, вы не можете использовать какие-либо свойства, такие как «загрузка». –

+0

[Для получения информации мы также можем использовать 'parent :: __ construct' в файле модели] (http://www.codeigniter.com/user_guide/general/models.html?highlight=models) – Saty

ответ

0
  • Причина эта линия необходима потому, что ваш местный конструктор будет перекрывая один в классе родительского контроллера поэтому мы должны вручную вызвать его.
  • Конструкторы полезны, если вам нужно установить некоторые значения по умолчанию или запустить процесс по умолчанию при создании экземпляра класса. Конструкторы не могут вернуть значение, но могут выполнять некоторую работу по умолчанию.

Read Codeigniter Constructors

И Возможная Дубликат PHP Codeigniter - parent::__construct

Пример

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->helper('date'); 
    $this->load->library('session'); 
    $this->load->model('My_model'); 
    $this->load->library('cart'); 

} 
0

вам необходимо включить parent::__construct(); включить расширенный класс инициализации конструктора по умолчанию С odeigniter, если вы не включаете, что вы переопределите конструктор родительского класса. function __construct() всегда запускается при создании экземпляра класса, поэтому, если вы хотите загрузить некоторые библиотеки или инициализировать какую-то ценность, то положите ее туда.