2010-08-27 34 views
4

我并不是说所有的模型都是表格。Zend中的每个表都必须映射到它自己的类吗?

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

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

感谢您的回复。

回答

7

在Zend表类遵循Table Data Gateway图案,其通过定义

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

In the bookFowler不是刚性有关,他说,

非常简单的情况下,你可以有一个单一的TDG是处理所有表中的所有方法。你甚至可以有一个视图,甚至有趣的查询没有保存在数据库中作为视图。

但是,除了能够使用视图,Zend_Db_Table不适合这一点。您可以为多个表创建查询,但这些查询必须直接通过Zend_Db_Adapter进行,或者在使用连接时通过关闭完整性检查来完成。否则,你必须使用由Zend_Db_Table Relationships提供的API

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

请注意,TDG是一个DataSource体系结构模式,而不是对象关系模式。它的目的不是帮助impedance-mismatch,而是从业务逻辑中分离数据库访问代码。

相关问题