2013-02-22 41 views
0

根据Zend快速入门指南,我需要三个类(一个模型,一个映射器类和一个表网关类)来实现表格数据网关模式。但这是一个好方法吗?在Zend Framework 1.x中实现Table Data Gateway模式的正确方法是什么?

现在这是我如何实现模式。

class Application_Model_Person(){ 
    private $_name; 

    public function getName(); 
    public function setName($name); 
} 

class Application_Model_PersonMapper extends Zend_Db_Table_Abstract { 

     public function fetch(); 
     public function search(); 
     public function save(Application_Model_Person $person); 
     public function delete(); 

} 

所以我必须与所有的getter/setter方法的模型类,并扩展了Zend_Db_Table_Abstract类,并执行所有CRUD操作的类。我喜欢这种方法,因为它减少了课程的数量,并且很容易遵循。但这是否是一个正确的方法?

如果我在Zend快速入门指南中使用该方法,我还能获得哪些优势?

+0

这不是真的关于Zend的快速入门指南,但常见的做法。您想阅读Martin Fowler的博客,他的链接位于Zend文档的许多地方。这是[Table Data Gateway]的起点(http://martinfowler.com/eaaCatalog/tableDataGateway.html) – 2013-02-22 16:45:34

+0

我确实了解这种模式,而且您的权利并不是关于快速入门指南。我对快速入门指南的参考只是强调用于实现这种模式的一种方法。在我的问题中,我还强调了另一种我使用的方法。我的问题是,有没有其他方法来实现这种模式?哪一个是最好的?因为这是一个模式,它可以使用不同的方法编码.... – 2013-02-23 04:25:15

回答

2

这取决于你的项目的规模。 ZF就是我所说的“企业就绪”,即构建一个大型的Web应用程序。在我看来,遵循这些模式,我几乎可以无限扩展。但是,对于许多较小的项目来说,这可能是矫枉过正的。

我在你的例子中看到的唯一问题是将映射器扩展为DbTable,它遵循常见的模式。对于较小的项目,您可以使用模型(外部 - 应用程序视图)并直接访问DbTable类(内部Db网关)并跳过映射器。

如果出于任何原因,您以后决定您需要某些表的映射器,您应该能够相当容易地实现它们。

相关问题