如何在codeigniter中分离数据访问层

Myt*_*yth 3 php codeigniter data-access-layer

我曾经在模型本身编写数据访问功能.现在我想将数据访问与业务逻辑分开.我使用codeigniter作为框架.似乎这样做的一种方法是使用ORM,但我猜它会有性能损失.

有没有一般的最佳做法?

Gor*_*don 5

看看POEAA的数据源架构模式:

CodeIgniter声称使用ActiveRecord,但它没有.它更像是一个基本的QueryObject.要真正将DAO与Domain对象分开,必须使用DataMapper.根据映射需求的复杂程度,您可以自己构建一个或使用ORM.无论如何,PHP World中的大多数ORM都基于ActiveRecord,它非常不适合ORM.Doctrine 2是我所知道的唯一使用DataMapper方法的.

ORM总会带来性能损失(可能是严重的).但是,您不应该因此而排除ORM.在高阻抗不匹配场景中手工制作高效的DataMapper 可能是繁琐且困难的工作.再次,请参阅POEAA以获取常见对象关系模式的列表.

对于具有Overzealous DMZ的CodeIgniter,似乎有一个DataMapper实现.我从未使用它,也无法说出任何相关信息.它只是在快速谷歌之后出现,所以我想我在这里添加它.