2017-12-18 105 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)); 
}