Рассматривая пример доменного объекта в учебнике Zend Quickstart и другие примеры, касающиеся шаблонов DAO / VO, они оба кажутся очень похожими.
Можем ли мы сделать вывод, что сказать «Объект значения» - это то же самое, что сказать «Доменный объект»?
Если нет, то не могли бы вы уточнить различия между ними?
Какова функция одного и что, если функция другого?
Я спрашиваю об этом, потому что оба составлены геттерами и сеттерами, и ничего более того. Кажется, они выполняют одну и ту же функцию ...
Обновление:
Итак, в документации по Zend Framework Quick Tutorial это называется доменным объектом:
// application/models/Guestbook.php
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;
}
}
1) Строго говоря, перед нами ли объект "Анемичный домен"?
2) Называется ли он "доменным объектом" просто , потому что содержит доменную логику?
3) Если это так, то эти средства отображения, содержащие такие методы, как findBookByAuthor (); они также имеют дело с доменной логикой, верно? Могут ли они также рассматриваться как доменные объекты?
Большое спасибо