2017-12-18 173 views
1

我們通常使用一個對象調用一個方法,但是在這裏codeigniter中有一個變量調用方法。他們是如何設計的?我遇到了一個叫超級對象的東西,他們是如何製造這樣一個對象的。任何幫助都是令人滿意的。我想知道內部架構如何在這裏工作。

$this->load->view(); //it loads view , how come $this->load an object here 
+0

一切都來自CI_controller –

+0

你可以通過在codeigniter中使用'library'來實現,也請說明你想要的是什麼chieve? –

+0

@Rajeevbbqq即時通訊試圖知道,codeigniter框架如何調用一個變量的方法。例如$ this-> load是一個變量,它調用方法..他們是如何實現它的?即時通訊談論內在的機制 –

回答

1

導航到/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)); 
}