1
我們通常使用一個對象調用一個方法,但是在這裏codeigniter中有一個變量調用方法。他們是如何設計的?我遇到了一個叫超級對象的東西,他們是如何製造這樣一個對象的。任何幫助都是令人滿意的。我想知道內部架構如何在這裏工作。
$this->load->view(); //it loads view , how come $this->load an object here
我們通常使用一個對象調用一個方法,但是在這裏codeigniter中有一個變量調用方法。他們是如何設計的?我遇到了一個叫超級對象的東西,他們是如何製造這樣一個對象的。任何幫助都是令人滿意的。我想知道內部架構如何在這裏工作。
$this->load->view(); //it loads view , how come $this->load an object here
導航到/system/core/Controller.php
,你可以看到下面的線條,在這一切得到觸發
public function __construct()
{
self::$instance =& $this;
foreach (is_loaded() as $var => $class)
{
$this->$var =& load_class($class);
}
$this->load =& load_class('Loader', 'core');
$this->load->initialize();
log_message('info', 'Controller Class Initialized');
}
看一看這一以及system/core/Loader.php
,你可以看到這樣的事情(相關->view()
)
/**
* View Loader
*
* Loads "view" files.
*
* @param string $view View name
* @param array $vars An associative array of data
* to be extracted for use in the view
* @param bool $return Whether to return the view output
* or leave it to the Output class
* @return object|string
*/
public function view($view, $vars = array(), $return = FALSE)
{
return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return));
}
一切都來自CI_controller –
你可以通過在codeigniter中使用'library'來實現,也請說明你想要的是什麼chieve? –
@Rajeevbbqq即時通訊試圖知道,codeigniter框架如何調用一個變量的方法。例如$ this-> load是一個變量,它調用方法..他們是如何實現它的?即時通訊談論內在的機制 –