2010-09-08 46 views
0

CI中,我們使用這樣Codeigniter像方法調用?

$this->load->view(); 

我想知道什麼是「加載」完全是一個方法調用?它是一種功能還是什麼?爲什麼它後面沒有兩個括號?我想在代碼中做這樣的事情,那我該怎麼做?

+0

請注意,()是括號,而大括號是{}。 – 2010-09-08 02:29:16

+0

@ Paul:哦,謝謝。我糾正了 – Lattice 2010-09-08 02:32:33

回答

2

load,對象$this的屬性,是CI_Loader類的一個實例。它有一個名爲view()的方法。

笨實例在一個相當鈍的方式Loader對象,但你能想象這樣的:

class Loader { 
    function view($view_name) { 
    echo "View '$view_name' loaded!"; 
    } 
} 

class FooController{ 
    public $load; 

    function __construct() { 
    $this->load = new Loader(); 
    } 
} 

$foo = new FooController(); 
$foo->load->view("bar"); // => "View 'bar' loaded!" 
/*^^ ^
    | |  | 
    | |  +--- view() is a method on the Loader object assigned to $foo's 'load' property 
    | | 
    | +--------- 'load' is a property on $foo, to which we've assigned an object of class Loader 
    | 
    +-------------- $foo is an instance of class FooController 
*/ 
+0

我們可以在另一個類定義中創建一個類的實例嗎? – Lattice 2010-09-08 02:29:38

+0

是的。類定義是全局的,所以一旦PHP知道一個類,我們可以在任何地方創建它的實例。 – 2010-09-08 02:39:48

0

你會做這樣的事情:

class Controller { 
    public $load = new Loader(); 
    //... 
} 

然後,您可以訪問屬性和$load上的方法如下:

$controller = new Controller(); 
$controller->load->foo(); 

在CI中,$load只是CI_Controller類的一個屬性,而CI_Loader類的一個實例。