Php Zend Db(标准或表网关)与Zend 2中的条令之争-优缺点

Php Zend Db(标准或表网关)与Zend 2中的条令之争-优缺点,php,zend-framework,doctrine-orm,zend-framework2,Php,Zend Framework,Doctrine Orm,Zend Framework2,Zend DB(标准方式或表网关)与Zend 2中的原则。 有些人可能会说这是苹果和橙色的比较,但我会说,因为它们是替代品(我们在两者之间使用一个),所以可以进行比较(因为需求并不总是非常清楚) 当我开始使用Zend 2时,因为文档、书籍和教程都是基于Zend DB或Table Gateway的,所以我使用了它,但当我们必须处理2、3个或更多的表连接(多个表网关适配器)时,我不满意这种方式,所以我切换到了条令ORM(也阅读了很多人说“条令适用于大型项目”)。我已经在symfony项目中使用了条令

Zend DB(标准方式或表网关)与Zend 2中的原则。 有些人可能会说这是苹果和橙色的比较,但我会说,因为它们是替代品(我们在两者之间使用一个),所以可以进行比较(因为需求并不总是非常清楚)

当我开始使用Zend 2时,因为文档、书籍和教程都是基于Zend DB或Table Gateway的,所以我使用了它,但当我们必须处理2、3个或更多的表连接(多个表网关适配器)时,我不满意这种方式,所以我切换到了条令ORM(也阅读了很多人说“条令适用于大型项目”)。我已经在symfony项目中使用了条令,所以这并不困难,但我也不喜欢实体之间复杂连接(额外工作)的条令,尤其是与Zend DB相比的缓慢和额外内存

现在我真的很困惑,我该怎么办?你们有什么建议

根据我的分析:

表网关 赞成的意见
  • 轻量级(保持简单)
  • Zend本机(更好地支持现在和将来的更新)
  • 更多文档书籍
  • 更好的社区或用户支持(因为这是许多人正在研究的)
  • 关闭数据库表(我擅长SQL,所以感觉不错)
  • 更灵活
  • 更易于使用其他本机特性,如ACL
欺骗:
  • 表联接(更复杂)
  • 在某些上下文中是原始的
  • 处理多表网关实例比较困难
教条 赞成的意见
  • 松散耦合的类越多,控制越好
  • 带来了使用ORM的所有优点
  • 很多关于条令本身的工作(教程文档)大部分时间都是有效的
  • 减少对数据库的依赖
  • 缓存(但也可以使用Zend DB表网关)
欺骗:
  • 中型项目内存更多,速度较慢(与Zend DB Table Gateway相比)
  • 增加复杂性(额外文件+配置+自身约定)
  • 对于中等规模的项目,有时会有过多的技巧
  • 在实体或复杂连接之间的多对多关系中需要更多的工作
  • 额外工作YAML模式
  • Zend+条令上的用户支持教程减少
还有其他的吗?(两者均适用)

那么,鉴于这些,你建议哪一个?在我可以扩展的通用CMS上工作

或者为什么Zend DB不能/不应该在大型项目中使用


我在这里发现了一些讨论,但不是根据其利弊分析。

多年后,我已经转向学说,我认为如果你能使它与
Zend
兼容,它比
Zend\u Db
要好得多。 Doctrine可以迁移您的数据库,这意味着您只需一个命令就可以将客户数据库更新到最新版本。 另一个好处是您的
实体可以在多个
DBMS
中实现,如
mysql
mssql
mangodb


为了获得更多的兼容性,您可以使用(这个框架为Zend 1.12添加了一些功能)

我做了相反的操作。我删除了原则2并切换到Zend DB 2,这将我们的查询提高了5倍,然后我们能够定制Zend DB table gateway的某些部分,并且我们在查询方面获得了5倍的性能(几乎与本机一样)


我想说的是,如果你没有大型数据集,就不要使用原则。请记住,条令会消耗大量资源。

如果以下内容对您很重要,那么我会说绝对支持Zend/Db/*

  • 演出
  • 可伸缩性
  • 低学习曲线
  • 已经问过