1

我试图将一个对象放在一个实例变量中,然后从控制器中的所有函数访问它,但它不起作用。

这是代码

<?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

    }

}

如您所见,即使我在 A 函数中将 $temp_posts 设置为 Post,当我尝试在 B 函数中打印它时它也不起作用。

有什么建议吗?

4

1 回答 1

2

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

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

因此,当您调用另一个函数((即/GestirePost/B)时,会创建另一个实例,并且一切都从头开始(您的类初始化等)。因此,您的 A 函数实际上从未从 PHP 的角度执行。

为了使用从函数调用到函数调用的数据(或者更确切地说,从另一个实例到另一个实例),我们使用数据库或 cookie。

于 2013-06-03T17:29:24.077 回答