了解域对象 + 数据映射器模式?
我过去一直使用各种ORM,并将我所有的逻辑都放在我的模型中,无论它的性质如何 - SQL,MongoDB查询甚至获取远程JSON对象。但是,当有必要确保松散耦合以实现高水平的可测试性时,这种方法的问题很快就会出现。
今天,我读到了关于将模型分成两部分的信息,& .
如果我完全理解它,就完全不知道所使用的存储,而是存在来处理业务逻辑。 另一方面负责将数据集存储在到集合数据存储中。Domain objects
Data mappers
Domain objects
Data mappers
Domain objects
然而,我确实发现很难在网上找到一个好的,易于理解的例子,说明如何在现实世界的例子中使用DomainObjects和DataMappers。
这(下面显示的代码)是在我的代码中使用DomainObjects和DataMappers来存储用户的适当方式,还是我在脑海中弄错了?
$user = new User_DO;
$userSave = new User_DM;
$userSave->store( $user->add(array('name' => 'John Doe')) );
class User_DO {
function add($array) {
if(!isset($array['name'])) {
throw new Exception("Name must be set");
}
return $array;
}
}
class User_DM {
function store($array) {
MyDatabase::execute("INSERT INTO...");
}
}