CodeIgniter创建在函数之间共享的Controller实例变量

时间:2013-06-03 17:19:06

标签: php codeigniter object

我正在尝试将一个对象放在一个实例变量中,然后从控制器中的所有函数访问它,但它无法正常工作。

这是代码

<?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函数中打印它时它也不起作用。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你的控制器不是持久的(PHP是脚本语言)

换句话说,一旦你通过浏览器调用函数(即/ GestirePost / A),它就会通过一系列文件,加载类等到达控制器并打印需要打印的内容。最终它结束并停在那里。

所以当你调用另一个函数((即/ GestirePost / B)时,会创建另一个实例,并且所有内容都会从头开始(你的类初始化等)。所以你的A函数,实际上从来没有从PHP的执行点开始执行。

要使用函数调用中的数据到函数调用(或者更确切地说是将另一个实例形成其他实例),我们使用数据库或cookie。