我并不是说所有的模型都是表格。Zend中的每个表都必须映射到它自己的类吗?
我在问的是每个表在使用Zend时是否还必须为它自己定义专门的类?有没有办法摆脱这种尴尬的锅炉板编码。我们刚开始研究Zend(希望离开程序化PHP的土地!),我的同事认为这可能最终会花费很多时间。
这是人们使用ORM解决方案的原因吗?有没有其他解决方法?
感谢您的回复。
我并不是说所有的模型都是表格。Zend中的每个表都必须映射到它自己的类吗?
我在问的是每个表在使用Zend时是否还必须为它自己定义专门的类?有没有办法摆脱这种尴尬的锅炉板编码。我们刚开始研究Zend(希望离开程序化PHP的土地!),我的同事认为这可能最终会花费很多时间。
这是人们使用ORM解决方案的原因吗?有没有其他解决方法?
感谢您的回复。
在Zend表类遵循Table Data Gateway图案,其通过定义
...保持所有SQL用于访问单一表或视图:选择,插入,更新和删除。其他代码调用其与数据库的所有交互的方法。
In the book,Fowler不是刚性有关,他说,
非常简单的情况下,你可以有一个单一的TDG是处理所有表中的所有方法。你甚至可以有一个视图,甚至有趣的查询没有保存在数据库中作为视图。
但是,除了能够使用视图,Zend_Db_Table
不适合这一点。您可以为多个表创建查询,但这些查询必须直接通过Zend_Db_Adapter
进行,或者在使用连接时通过关闭完整性检查来完成。否则,你必须使用由Zend_Db_Table Relationships
提供的API
所以是的,一个实例应该对应一个表或视图。您不需要为此创建类,但是如果您不打算扩展类。 Zend_Db_Table_Definitions
允许您即时配置Zend_Db_Table
实例。
请注意,TDG是一个DataSource体系结构模式,而不是对象关系模式。它的目的不是帮助impedance-mismatch,而是从业务逻辑中分离数据库访问代码。