Zend中的每个表都必须映射到自己的类吗?

oli*_*ive 4 php orm zend-framework

我并不是说所有型号都是表格.

我要问的是,在使用Zend时,每个表是否还必须有专门为其定义的类?有没有办法摆脱这种笨拙的锅炉板编码.我们刚刚开始研究Zend(希望离开程序化PHP的土地!),我的同事认为这可能最终耗费时间.

这是人们使用ORM解决方案的原因吗?还有其他方法吗?

谢谢你的回复.

Gor*_*don 7

Zend Table类遵循Table Data Gateway模式,根据定义

...保存用于访问单个表或视图的所有SQL:选择,插入,更新和删除.其他代码调用其方法进行与数据库的所有交互.

在书中,福勒对此并不那么刻板,这样说

对于非常简单的情况,您可以使用单个TDG来处理所有表的所有方法.您甚至可以使用一个用于视图,甚至可以使用未作为视图保存在数据库中的有趣查询.

但是,除了能够使用视图外,Zend_Db_Table不适合此.您可以为多个表创建查询,但这些表必须通过Zend_Db_Adapter直接或 - 当使用连接时 - 通过关闭完整性检查来创建.否则,您必须使用提供的APIZend_Db_Table Relationships

所以是的,一个实例应该对应一个表或视图.如果您不打算扩展类,则不需要为此创建类.Zend_Db_Table_Definitions允许您动态配置Zend_Db_Table实例.

请注意,TDG是数据源架构模式,而不是对象关系模式.它的目的不是帮助阻抗不匹配,而是将数据库访问代码与业务逻辑分开.