Zend Framework 1.8 中的Model
在ZF1.8以后Module的问题得以完善,但是仍然有很多领域需要改进,Model就是其中一个
Model的类型用DbTable<->Mapper<->Model的DataMapper Pattern (同时参照IdentityMap和UnitOfWork)来调用,其中对象Model用于导入对象,导入后就由UOW拥有的Identity对象来跟踪,以此来保持数据的同步。比如一个Users表,我们有如下类:
Model_User是业务域模型(domain Model),关于domain design的模式可以参见domain driven design一书。
Model_UserMapper来完成Model对象和数据库的映射关系
Model_DbTable_Users extends Zend_Db_Table_Abstract类负责数据库方面的设定
以上pattern的使用在这篇帖子和Zend 的proposal中有讨论到。这个Pattern的好处是,如果你将来不用数据库来保存数据,而换用文件或者Memcached,那么你就不用修改你的Controller了;从来引来的一个缺点是几乎每个调用都需要来定义Mapper,从而导致复杂度提高。通常情况下对于不是比较复杂的情况,1:1的应用来说,Table Gatewy, Row, Rowset的Pattern已经足够使用。
关于DataMapper的Model使用模型还在更新过程中,同时还有个datashuffler在ZF上的实现目前也在研究中。
总结得太好了!感谢。