6

CodeIgniterで「結果オブジェクトクラス」を整理する適切な方法を探しています。これらのクラスは通常、ドキュメントで説明されているようにモデルで使用されます。

結果オブジェクトごとにインスタンス化するクラスを表す文字列をresult()に渡すこともできます(注:このクラスをロードする必要があります)

$query = $this->db->query("SELECT * FROM users;");

foreach ($query->result('User') as $row)
{
   echo $row->name; // call attributes
   echo $row->reverse_name(); // or methods defined on the 'User' class
}

では、「User」クラスをどこに配置し、それをロードする「公式」な方法はありますか?

4

2 に答える 2

3

ライブラリを使用してみてください。

クラスを application/libraries フォルダーに配置し、ローダーを使用してロードします。

$this->load->library('user');
于 2012-09-17T11:46:03.473 に答える
0

あなたが求めているものとは正確には異なりますが、私はしばしば MY_Model を次のように使用します:

public function merge_object(&$object, $data){

    if (is_object($data)) {
        $data = get_object_vars($data);
    }
    if (!empty($data)) {
        foreach ($data as $property => $value) {
            if (!property_exists($object, $property)) {
                $object->$property = $value;
            }
        }
    }
    return $object;
}

そして、$this->merge_object($this, $data); を呼び出します。__construct($data = array()) から

ここでモデル関数を呼び出すと、モデル クラスのインスタンスも返されるため、そのメソッドのいずれかにアクセスできます。それは本質的にあなたがやろうとしていることをします。

于 2012-09-22T08:46:37.860 に答える