我正在编写一个管理Drupal节点之类的应用程序。我打算在各种内容管理系统/应用程序中使用该应用程序(Concrete5,Wordpress,自定义Zend和Yii应用程序等......)。
由于我在很多不同的地方使用它,我必须用应用程序打包ORM(即我不能使用Conrete5或Yii的ORM等等)。我喜欢Doctrine 2,但我担心这个“太大”的orm与我的应用程序打包在一起。
例如,如果我将这个应用程序与运行Doctrine 2的Zend应用程序结合起来,那就太麻烦了。我不希望Doctrine的两个'实例'在同一个应用程序中运行。这是一个值得关注的问题吗?问题:Doctrine 2对于这个项目来说太“大”了吗?如果是这样,什么是一个好的替代ORM?
答案 0 :(得分:2)
如果您要将您的应用程序用作其他CMS和/或框架的扩展,您应该定义使用ORM,原因如下:
1.CMS数据库安装不同。有些人使用mysql一些使用oracle等,你必须创建自己的适配器或
2.使用CMS的原生数据库抽象层。因此,您必须为每个要制作的cms插件重新创建自己的模型。
3.Doctrine可以做很多大工作,但使用学说相当容易。虚拟化不是资源密集型。
4.据我所知,使用一个以上的学说实例不会成为问题。
5.如果doctrine2需要最低限度地安装PHP 5.3,并且某些共享服务器可能具有较旧版本的php,这个问题将在时间过去时解决,5.2会过时。
但是在某些CMS中,您的扩展程序可以使用多个连接。(一个用于CMS的本机数据库查询,另一个用于您的学说查询。)
答案 1 :(得分:0)
方式1:通过适配器使用不同的ORM
(+)更好地与框架集成
( - )很多工作来实现适配器
( - )失去灵活性(受适配器接口限制)
方式2(我的选择):将PDO与FETCH_CLASS一起使用,它足够舒服(您可以将数据提取到类的实例)。 PHP上的大多数现代ORM都是通过PDO工作的,因此集成必须简单。
关于Doctrine 2& Yii - 我测试了这个组合,效果很好。