Я начинаю с CodeIgniter и после нескольких часов погружений в Google я немного растерялся.
Давайте попробуем объяснить мой вопрос на простом примере: у меня есть таблица 'car' с полями 'name' и 'color'. Поэтому я хочу иметь класс php Car, чтобы мой код мог выглядеть примерно так:
$car = new Car('BMW', 'red'); //new $car Object
$car->save(); //this will make an SQL insert to the table 'car'
//Lets query all cars
$cars = Car::get_all();
//cars will be an array of Car objects, (not a set of rows!)
Поэтому я ищу что-то очень похожее на то, что у вас есть в RubyOnRails или Django (Python). Мне нужно обрабатывать все виды отношений и уметь писать код по-настоящему OOP + MVC.
Вот мои неудачные подходы, чтобы получить его:
Использование внешнего ORM (DataMapper, Doctrine, AcidCrud ...)
Они либо требуют слишком много настроек, либо плохо обрабатывают отношения.
Использование классов CodeIgniter (для расширения класса Model CodeIgniter)
class Car extends Model{
public function Car($name='',$color='')
{
$this->name = $name;
$this->color = $color;
parent::Model();
}
public function save()
{
$data = array(
'name' => $this->name ,
'color' => $this->color
);
$this->db->insert('cars' $data);
}
И так далее. Проблема с этим подходом заключается в том, что если сделать var_dump () объекта $ car, я вижу, что он содержит много вещей из CodeIgniter, таких как объекты CI_Config, CI_Input, CI_Benchmark и т. д. Поэтому я думаю, что это не очень хорошее решение, потому что каждый объект моего класса Car будет содержать много повторяющихся данных (он будет иметь низкую производительность!), не так ли?
Не используются модели CodeIgniter
Я мог бы создавать свои модели, не расширяя их из класса Model в CodeIgniter, а затем используя обычный конструктор PHP5 (__construct () вместо функции Car ()), но проблема в этом случае заключается в следующем: как получить доступ к объекту $ db сделать запросы, используя ActiveRecord CodeIgniter? и как я загружаю модели (его классы) в контроллеры?