CodeIgniter控制器实例化:什么时候发生?

时间:2018-09-29 20:46:31

标签: codeigniter

我想了解有关CodeIgniter中实例化发生时间的详细信息,特别是控制器的实例化。

假设我有一个名为Main的控制器,其结构如下:

class Main extends CI_Controller{

 public $variable;

 public function index(){

    $this->load->view('home/body');
    $this->variable="TEST";

 }

 public function run(){
     do something with $this->variable;
 }

}
假设我在浏览器 localhost / index.php / main 上调用,从而为第一个main实例化了控制器 Main 。它的默认方法index()只需通过 load-> view()加载html页面。

在此页面中,有一个按钮,该按钮使用URL localhost / index.php / main / run <向同一控制器发出AJAX请求,以使用方法 run() / em>。

在这一点上, $ variable 是否不确定?换句话说,会重新实例化 Main 类,还是AJAX请求使用之前构建的相同实例?

1 个答案:

答案 0 :(得分:0)

我了解您的困惑。通常在codeigniter中使用单例模式,似乎变量将永久存在。事实并非如此。

run()上的AJAX加载本质上是一个单独的请求(将其视为页面刷新)。先前在index()中定义或仅在对index() 请求中定义的任何变量将不可用。

您有3个选项可以将变量从一个呼叫转移到下一个呼叫:会话,cookie或数据库。