Где поставить и как загрузить класс объекта результата в Codeigniter?

109
9

Я ищу подходящий способ организовать "Объектные классы объектов" в 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
}


Итак, где поставить класс "Пользователь" и есть ли какой-либо "официальный" способ его загрузки?

спросил(а) 2021-01-19T23:15:38+03:00 6 месяцев, 1 неделя назад
1
Решение
78

Попробуйте использовать библиотеку.


Поместите свой класс в папку приложения/библиотеки, затем используйте загрузчик для его загрузки:

$this->load->library('user');

ответил(а) 2021-01-19T23:15:38+03:00 6 месяцев, 1 неделя назад
45

Не совсем то, о чем вы просите, но я часто использую 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())


Когда вы вызываете функцию модели сейчас, она также возвращает экземпляр класса модели, и вы можете получить доступ к любому из его методов. Это делает то, что вы пытаетесь сделать.

ответил(а) 2021-01-19T23:15:38+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема