Посмотрите на POEAA Архитектурные шаблоны источника данных:
CodeIgniter утверждает, что использует ActiveRecord, но это не .Это больше похоже на элементарный QueryObject .Чтобы действительно отделить ваш DAO от ваших объектов Domain, вы должны использовать DataMapper.В зависимости от сложности ваших картографических потребностей вы можете создать их самостоятельно или использовать ORM .По иронии судьбы, большинство ORM в мире PHP основаны на ActiveRecord, , который очень плохо подходит для ORM .Доктрина 2 - единственное, что мне известно, использующее подход DataMapper.
ORM всегда сопровождается снижением производительности (и оно может быть серьезным).Тем не менее, вы не должны исключать ORM только из-за этого.Создание эффективного DataMapper вручную в сценарии с высоким несовпадением импедансов может быть утомительной и сложной работой.Снова, смотрите POEAA для списка общих объектно-реляционных шаблонов.
Похоже, что реализация DataMapper для CodeIgniter с чрезмерным количеством DMZ .Я никогда не работал с этим и не могу ничего сказать об этом.Он появился после быстрого гугла, поэтому я решил добавить его сюда.