Это объектный класс домена?

Если объект домена = бизнес-объект, то я ожидал увидеть такие вещи, как 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) общим (не зависящим от базы данных) способом;

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

Если приведенное выше верно, то мне все еще не хватает этого:

Объекты домена (также известные как бизнес-объекты) - эти объекты ... Я не понимаю ... каковы их отношения с другими?

Как мы можем правильно определить объект домена - в отношении этой архитектуры шлюза / сопоставителя?


person MEM    schedule 02.05.2011    source источник


Ответы (1)


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

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

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

person Matías Fidemraizer    schedule 02.05.2011
comment
так что тот факт, что у него есть геттеры и сеттеры, ничего не значит, у него может быть что угодно, а это еще как-то связано с бизнесом? - person MEM; 02.05.2011
comment
Извините, я обновил свой вопрос. Возможно, мы сможем помочь мне и там, если вам будет легко ответить. Спасибо. - person MEM; 02.05.2011
comment
Я считаю, что даже с вашим обновлением наши ответы верны. Ваш вопрос в том, что это ... и мы отвечаем да, это так :) - person Matías Fidemraizer; 02.05.2011
comment
Тогда я изменю главный вопрос. :) Надеюсь, вы не из Вильярреала, потому что я из ФК Порту. Мой вопрос должен быть больше: как мы можем определить объект домена в отношении архитектуры шлюза / картографа? (при условии, что мои определения обоих предыдущих верны). - person MEM; 02.05.2011
comment
О, тогда я предпочитаю НЕ играть с тобой. ;) - Я обновил свой вопрос, с которым борюсь. - person MEM; 02.05.2011
comment
Если верно, что объекты Data Mapper также могут быть объектами домена, и если этот класс модели отличается от класса Mapper (также представленного в руководстве по быстрому запуску: Могу я спросить: есть ли какой-либо другой объект, который может представлять его класс? Я имею в виду , похоже, что этот класс представляет объект предметной области, а точнее модельный. Может, мне что-то не хватает ... arggghh! - person MEM; 02.05.2011
comment
Что ж, моя точка зрения состоит в том, что это не должно представлять ничего, кроме объекта домена, потому что OR / M (отображение данных) должно переводить реляционный мир в ООП, а что вы храните в своей базе данных? Объекты домена и их ассоциации. - person Matías Fidemraizer; 02.05.2011