【问题标题】:CodeIgniter controller instantiation: when does it happen?CodeIgniter 控制器实例化:什么时候发生?
【发布时间】:2023-03-08 04:35:01
【问题描述】:

我想知道关于何时在 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。它的默认方法 index() 只是通过 load->view() 加载一个 html 页面。

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

此时,$variable 是否会未定义?换句话说,Main 类会被重新实例化,还是 AJAX 请求会使用之前构建的相同实例?

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

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

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

    您有 3 个选项可以将变量从一次调用传递到下一次调用:会话、cookie 或数据库。

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 2017-02-18
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      相关资源
      最近更新 更多