Это класс объекта домена? - PullRequest
3 голосов
/ 02 мая 2011

Если 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) обычным (не зависящим от базы данных) способом;

Data Mappers Objects - Эти объекты будут работать между нашим источником данных и объектными моделями нашего домена. Они могут или не могут использовать шлюз для доступа к источнику данных. Их задача заключается в том, чтобы, ссылаясь НЕ на конкретную таблицу, НО на домен (которому может потребоваться / иметь доступ к различным таблицам), она обеспечивает способ лучшей организации данных и связанного поведения. В этом примере Zend мы будем использовать маппер для перемещения данных вперед и назад между объектами домена и объектами шлюза;

Если вышеупомянутое верно, то я все еще пропускаю это:

Доменные объекты (бизнес-объекты a.k.a) - Эти объекты ... я не понимаю ... как они связаны с другими?

Как мы можем правильно определить Доменный объект - относительно этой архитектуры Gateway / Mapper?

1 Ответ

1 голос
/ 02 мая 2011

Я полагаю, вы путаете бизнес-менеджеров или что-то подобное с объектами домена. Доменный объект должен быть бизнес-объектом, поэтому я собираюсь подтвердить, что ваш пример кода является доменным объектом .

РЕДАКТИРОВАТЬ | Ответ на ваше обновление:

Доменный объект - это сущность, играющая некоторую деловую роль в какой-то конкретной коммерческой сфере. Если я не понимаю неправильные определения Zend, «Объекты Data Mapper» могут быть «объектами домена», но не во всех случаях.

...