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 に答える