模型逻辑和服务层逻辑

时间:2012-02-23 16:46:47

标签: php model-view-controller oop zend-framework

我最近发现的是,我正在对应用程序的多个层进行编码,以实现非常简单的操作。

例如

$domain = new Application_Model_Domain(); 
$table = $domain->getMapper()->getDbTable();
$row = $table->find($id)->current();
$row->delete();

这可以很容易地在我的服务层中的delete()方法中完成。但是,我一直在将此功能转移到模型映射器中:

# service layer
$domain = new Application_Model_Domain();
$domain->getMapper()->delete($id);

# mapper
function delete($id) {
  $table = $this->getDbTable();
  $row = $table->find($id)->current();
  $row->delete();  
}

您认为哪种方法最有效?

3 个答案:

答案 0 :(得分:1)

让模型映射器中包含的函数可以帮助您避免在应用程序的多个位置重复代码(即强制执行DRY原则),并使调试和代码修改更容易批次

答案 1 :(得分:0)

在我看来,所有与数据库相关的操作都必须在模型层中。因此,只需使用现有的模型层,您就可以替换逻辑层而无需重写相同的代码。

答案 2 :(得分:0)

通常,最好有一个单独的数据访问层。这是一种众所周知的模式,称为数据访问层(DAO)。因为,如果你考虑一下,数据访问并不真正属于模型层或服务层。然后,服务层可以使用DAO层。