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
}

那么,在哪里放置“用户”类,是否有任何“官方”方式来加载它?

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 回答