0

静的関数でCodeIgniterメソッドを呼び出そうとして問題が発生しました。オブジェクトコンテキストにないため、$ thisを使用しても機能せず、staticキーワードも機能しません。これは私のコアモデルのコードの例であり、$table変数はpostsなどの別のモデルから正常に定義されています。

class MY_Model extends CI_Model {

    protected static $table;

    public function __construct() {
        parent::__construct();
    }

    public static function find_all() {
        $this->db->select('*');
        $sql = $this->db->get(static::$table);
        return $sql->result();
    }

}
4

4 に答える 4

5

$ thisが機能しない場合は、次のように回避できます。

$ CI =&get_instance();
$ CI->db->..。
于 2012-09-03T20:42:12.617 に答える
3

ローダー クラスに組み込まれている codeigniter は、クラスを自動的にインスタンス化します。インスタンス化せずにクラスを使用することはサポートされていません。ファイルをモデルファイルに手動で含めることができ、それを使用できます。詳細については、このスレッドをチェックしてください: http://codeigniter.com/forums/viewthread/73583/

于 2012-09-04T08:19:33.227 に答える
0

必要なのは、クラス内の静的変数への参照であるため、次を使用します。

class MY_Model extends CI_Model {

    protected static $table;

    public function __construct() {
        parent::__construct();
    }

    public static function find_all() {
        $this->db->select('*');
        $sql = $this->db->get(self::$table);
        return $sql->result();
    }

}

もちろん、$table には値が必要です。

于 2012-09-03T20:38:24.583 に答える