Това домейн обектен клас ли е?

Ако 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?


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
Тогава ще променя основния въпрос. :) Дано не си от Виляреал, защото аз съм от ФК Порто. Въпросът ми трябва да е повече: Как можем да дефинираме обект на домейн по отношение на архитектура на Gateway / Mapper? (ако приемем, че дефинициите ми на предишните и двете са правилни). - person MEM; 02.05.2011
comment
О, тогава предпочитам да НЕ играя с теб. ;) - Актуализирах въпроса си, с който се боря. - person MEM; 02.05.2011
comment
Ако е вярно, че обектите за картографиране на данни също могат да бъдат обекти на домейн и ако този моделен клас е различен от класа за картографиране (представен и в ръководството за бързо стартиране: Мога ли да попитам: Има ли друг обект, който неговият клас може да представлява? Имам предвид , изглежда, че този клас представлява домейн обект, по-конкретно, модел. Може да пропускам нещо... arggghh! - person MEM; 02.05.2011
comment
Е, моята гледна точка е, че не трябва да представлява нищо друго освен обект на домейн, защото OR/M (преобразуване на данни) трябва да преведе релационния свят в OOP един и какво съхранявате във вашата база данни? Домейн обекти и техните асоциации. - person Matías Fidemraizer; 02.05.2011