PHP-如何在Codeigniter中分离数据访问层
作者:互联网
我曾经在模型本身中编写数据访问功能.现在,我想将数据访问与业务逻辑分开.我正在使用codeigniter作为框架.
似乎一种实现方法是使用ORM,但我猜它会降低性能.
有没有一般的最佳做法?
解决方法:
看一下POEAA的数据源架构模式:
> Table Data Gateway
> Row Data Gateway
> Active Record
> Data Mapper
CodeIgniter声称使用ActiveRecord,but it doesnt.它更像是基本的QueryObject.要真正将DAO与Domain对象分开,必须使用DataMapper.根据您的映射需求的复杂性,您可以自己构建或使用ORM.具有讽刺意味的是,PHP世界中的大多数ORM都基于ActiveRecordwhich is pretty ill-suited for ORM.Doctrine2是我所知道的唯一使用DataMapper方法的方法.
一个ORM总是会带来性能损失(并且可能是严重的).但是,您不应该仅仅因为这个原因就排除ORM.在高impedance mismatch的情况下手工创建高效的DataMapper可能是乏味且困难的工作.同样,请参阅POEAA以获取常见的对象关系模式列表.
似乎有DataMapper implementation for CodeIgniter with Overzealous DMZ.我从未使用过它,也无法对此发表任何评论.它只是在快速谷歌之后出现的,所以我想我在这里添加了它.
标签:codeigniter,data-access-layer,php 来源: https://codeday.me/bug/20191023/1915311.html