CI中,我們使用這樣Codeigniter像方法調用?
$this->load->view();
我想知道什麼是「加載」完全是一個方法調用?它是一種功能還是什麼?爲什麼它後面沒有兩個括號?我想在代碼中做這樣的事情,那我該怎麼做?
CI中,我們使用這樣Codeigniter像方法調用?
$this->load->view();
我想知道什麼是「加載」完全是一個方法調用?它是一種功能還是什麼?爲什麼它後面沒有兩個括號?我想在代碼中做這樣的事情,那我該怎麼做?
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
*/
我們可以在另一個類定義中創建一個類的實例嗎? – Lattice 2010-09-08 02:29:38
是的。類定義是全局的,所以一旦PHP知道一個類,我們可以在任何地方創建它的實例。 – 2010-09-08 02:39:48
你會做這樣的事情:
class Controller {
public $load = new Loader();
//...
}
然後,您可以訪問屬性和$load
上的方法如下:
$controller = new Controller();
$controller->load->foo();
在CI中,$load
只是CI_Controller
類的一個屬性,而CI_Loader
類的一個實例。
請注意,()是括號,而大括號是{}。 – 2010-09-08 02:29:16
@ Paul:哦,謝謝。我糾正了 – Lattice 2010-09-08 02:32:33