Ben farklı bölgelerine uygulama Domain Modelleri yeniden nasıl anlamaya çalışıyorum ve Veri Mapper desen ileriye yol olduğunu bir his var. Aşağıdaki örnek, doğrudan Mapper yöntemleri erişim yöntemleri vardır.
class Groups
{
protected $_groups = array();
public function addGroup($name)
{
$this->_groups[] = $name;
}
public function doSomethingGroupy($cakes)
{
// get all the groups that have cake
return $cakeyGroups;
}
}
... Ve Grupları sınıf yöntemlerini uygun bir mapper.
class GroupMapper
{
public function find($id, Groups $group)
{
// Mappy type things, maybe some sql
}
public function fetchByNeediness($cuddles, Groups $group)
{
// More mappy type things
}
public function save(Groups $groups)
{
// Saves
}
}
Bazen sonra ben aynı Grupları Modelleri kullanmak ancak farklı sorguları kullanarak grupları doldurmak istedim ancak ben farklı bir eşleştiricisini kullanmak istiyorsunuz.
class AngryGroupMapper
{
public function find($id, Groups $group)
{
// Something similar but with other tables and joins
}
public function fetchByRage($anger, Groups $group)
{
// Something new but only needed here
}
public function isEditable(Groups $groups)
{
// Do some querying
return $bool;
{
}
Yağ Modeli, bu yüzden Modeli Eşleştiricisi'ni (tabiri caizse) Harita için başka bir model olurdu - Şimdi ben amacı Skinny Kontrol olduğunu biliyor musun?
class FatModelRepository
{
public function getHappyGroups()
{
$mapper = new GroupMapper();
return $mapper->fetchByNeediness('Puffy Shoes', new Groups());
}
public function getSadGroups()
{
$mapper = new AngryGroupMapper();
return $mapper->fetchByRage('Aghh!', new Groups());
{
public function save(Groups $groups)
{
$mapper = new GroupMapper();
return $mapper->save($groups);
{
}