Модели Codeigniter - это просто служебные классы? - PullRequest
4 голосов
/ 16 декабря 2010

В MVC, к которому я привык, классы моделей (обычно) представляют таблицы, а объекты этих классов являются строками / объектами домена. Я не понимаю в CodeIgniter, почему классы моделей кажутся просто одноуровневыми служебными классами. Чувствуется неправильно писать

$data = array('text' => 'hello');
$this->commentModel->insert($data);

вместо

$comment = new Comment();
$comment->text = 'hello';
$comment->save();

Может кто-нибудь объяснить, почему CodeIgniter делает модели таким образом, и я чувствую себя лучше? (Или скажите мне, что я могу сделать, чтобы это исправить.)

Ответы [ 3 ]

4 голосов
/ 17 декабря 2010

Модели в CodeIgniter спроектированы с использованием одноэлементного шаблона.В то время как многим людям, привыкшим работать с более широким подходом PHP OOP, это кажется непонятным, есть несколько причин:

Первая самая простая вещь - вы можете загрузить модель только один раз и получитьон доступен в суперглобальном мире для использования во всей системе.

Это единственный настоящий плюс, остальное - извинительные объяснения.

CI был построен в 2006 году сПоддержка PHP 4 в качестве основного приоритета.

Это только начинает меняться, теперь EllisLab прекратил поддержку PHP 4 с CI 2.0, но сейчас так работает фреймворк.

Конечно, вы можете загрузить модель и затем использовать любой синтаксис PHP 5, который вам нравится для ваших моделей.

$ this-> load-> model ('comment');

$комментарий = новый комментарий ();$ comment-> text = 'hello';$ comment-> save ();

3 голосов
/ 16 декабря 2010

CodeIgniter не включает ORM.

Я бы посоветовал увидеть в Doctrine, который легко интегрируется с CI: http://codeigniter.com/wiki/Using_Doctrine_with_Code_Igniter/

1 голос
/ 17 декабря 2010

Вы можете проверить мои статьи о том, как использовать Doctrine (ORM) с Codeigniter.

Часть 1 из 11: http://www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...