2015-09-24 41 views
1

爲什麼__constructor代碼需要在codeigniter控制器和模型中運行?沒有這些行,代碼工作正常。我很困惑 !爲什麼codeigniter中需要__constructor

+0

因爲PHP默認不調用構造函數祖先。你的對象可能不需要有一個明確運行的構造函數,但是無論你的對象是從哪個對象繼承而來**可能**需要運行一個對象。 –

回答

0

使用_construct(magic Function)的原因是通過控制器加載庫和幫助程序,這樣就不必在每個函數中加載庫和幫助程序。

例子:

function __construct() { 
    parent::__construct(); 
    $this->load->library('someclass'); 
    $this->load->helper('someclass'); 
} 
0

只要控制器/模型中的類不需要它的構造方法被調用,它就會工作。如果擴展的類定義了所需的依賴關係(例如),則可能會得到不需要的結果。 即使構造方法是所謂的「魔術方法」,當您使用new關鍵字(注意,你必須使用括號),它會被自動調用:

$foo = new Foo(); 

這並不意味着類Foo正在擴展的地方將得到它的自動調用的構造函數方法。