Ако Domain Object = Business Object, тогава очаквах да видя неща като findTaxValues(); или searchBooksByAuthor(); вместо това виждам като цяло гетери и сетери.
1)
Това домейн обектен клас ли е?
class Application_Model_Guestbook
{
protected $_comment;
protected $_created;
protected $_email;
protected $_id;
public function __construct(array $options = null)
{
if (is_array($options)) {
$this->setOptions($options);
}
}
public function __set($name, $value)
{
$method = 'set' . $name;
if (('mapper' == $name) || !method_exists($this, $method)) {
throw new Exception('Invalid guestbook property');
}
$this->$method($value);
}
public function __get($name)
{
$method = 'get' . $name;
if (('mapper' == $name) || !method_exists($this, $method)) {
throw new Exception('Invalid guestbook property');
}
return $this->$method();
}
public function setOptions(array $options)
{
$methods = get_class_methods($this);
foreach ($options as $key => $value) {
$method = 'set' . ucfirst($key);
if (in_array($method, $methods)) {
$this->$method($value);
}
}
return $this;
}
public function setComment($text)
{
$this->_comment = (string) $text;
return $this;
}
public function getComment()
{
return $this->_comment;
}
public function setEmail($email)
{
$this->_email = (string) $email;
return $this;
}
public function getEmail()
{
return $this->_email;
}
public function setCreated($ts)
{
$this->_created = $ts;
return $this;
}
public function getCreated()
{
return $this->_created;
}
public function setId($id)
{
$this->_id = (int) $id;
return $this;
}
public function getId()
{
return $this->_id;
}
}
Актуализация:
2) Тъй като изглежда, че е обектен клас на домейн:
Трудно ми е да изучавам ръководството за бърз старт на Zend.
Ето автобиографията ми досега:
Обекти на шлюза за данни за таблици – Това са обектни копия на нашите таблици и трябва да съдържат общи заявки, свързани с таблици. На Zend ще ги използваме за извършване на общи заявки, които ще работят в различни доставчици на бази данни чрез разширение Zend_Db_Table_Abstract. Какво ще правят тези шлюзови обекти? Те ще се свържат (чрез адаптер) с нашия източник на данни (напр. MySQL база данни) по общ (неспецифичен за базата данни) начин;
Обекти за картографиране на данни – Тези обекти ще работят между нашия източник на данни и нашите обектни модели на домейн. Те могат или не могат да използват Gateway, за да имат достъп до източника на данни. Тяхната работа е, докато препращат НЕ към конкретна таблица, А към домейн (който може да се нуждае/има достъп до различни таблици), тя осигурява начин за по-добро организиране на данните и свързаното с тях поведение. В този пример на Zend ще използваме картографа, за да преместваме данни назад и напред между обекти на домейн и обекти на шлюз;
Ако горното е правилно, тогава все още ми липсва това:
Обекти на домейн (известни още като бизнес обекти) – Тези обекти... не разбирам тук... каква е връзката им с другите?
Как можем правилно да дефинираме Domain Object - по отношение на тази архитектура Gateway/Mapper?