我想了解有关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请求使用之前构建的相同实例?
答案 0 :(得分:0)
我了解您的困惑。通常在codeigniter中使用单例模式,似乎变量将永久存在。事实并非如此。
run()
上的AJAX加载本质上是一个单独的请求(将其视为页面刷新)。先前在index()
中定义或仅在对index()
的请求中定义的任何变量将不可用。
您有3个选项可以将变量从一个呼叫转移到下一个呼叫:会话,cookie或数据库。