我正在尝试将一个对象放在一个实例变量中,然后从控制器中的所有函数访问它,但它无法正常工作。
这是代码
<?php
class GestirePost extends CI_Controller {
private $temp_posts;
public function __construct(){
parent::__construct();
$this->load->library('post');
}
public function A(){
$post = new Post();
$this->temp_posts = $post;
echo gettype($this->temp_posts);
// PRINTS OBJECT
}
public function B(){
$post = $this->temp_posts;
echo gettype($this->temp_posts);
//PRINTS NULL
}
}
正如你所看到的,即使我将$ temp_posts设置为A函数中的Post,当我尝试在B函数中打印它时它也不起作用。
有什么建议吗?
答案 0 :(得分:2)
你的控制器不是持久的(PHP是脚本语言)
换句话说,一旦你通过浏览器调用函数(即/ GestirePost / A),它就会通过一系列文件,加载类等到达控制器并打印需要打印的内容。最终它结束并停在那里。
所以当你调用另一个函数((即/ GestirePost / B)时,会创建另一个实例,并且所有内容都会从头开始(你的类初始化等)。所以你的A函数,实际上从来没有从PHP的执行点开始执行。
要使用函数调用中的数据到函数调用(或者更确切地说是将另一个实例形成其他实例),我们使用数据库或cookie。