В Zend, где и как эти переменные установлены для модели? - PullRequest
3 голосов
/ 29 ноября 2011

Я смотрю на быстрый запуск и задаюсь вопросом, как эти следующие значения установлены в модели:

    protected $_comment
    protected $_created;
    protected $_email;
    protected $_id;

http://framework.zend.com/manual/en/learning.quickstart.create-model.html

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

1 Ответ

4 голосов
/ 29 ноября 2011

В приложении Quickstart эти переменные устанавливаются методами сеттера в классе модели, и эти сеттеры вызываются классами картографа модели.

Эти переменные не должны иметь никакого отношения кимена столбцов базы данных, но часто бывает полезно назвать их одинаковыми или похожими, чтобы избежать путаницы.

Приложение быстрого запуска использует шаблон шлюза табличных данных , который использует классы Mapper для фактическоговзаимодействовать с базой данных.Классы сопоставления затем отображают данные из базы данных в объекты PHP, которым не нужно знать структуру базы данных или имена столбцов.

См. Этот код из GuestbookMapper.php, который фактически взаимодействует с базой данных:

public function find($id, Application_Model_Guestbook $guestbook)
{
    $result = $this->getDbTable()->find($id);
    if (0 == count($result)) {
        return;
    }
    $row = $result->current();
    $guestbook->setId($row->id)
              ->setEmail($row->email)
              ->setComment($row->comment)
              ->setCreated($row->created);
}

В функции find () вы передаете объект Application_Model_Guestbook, который может быть не заполнен, и он сопоставляет столбцы базы данных с объектом (т. Е. $ Row-> email, где email - это имя столбца таблицы базы данных.).

Теперь в PHP вы можете использовать объект Application_Model_Guestbook для получения или установки значений, а затем передать его обратно в преобразователь, который отвечает за обновление соответствующих столбцов базы данных для рассматриваемой записи.

Итак, чтобы ответить на ваш вопрос, Нет, они не устанавливаются автоматически, а задаются классом картографа.

Надеюсь, что это поможет, не стесняйтесь комментировать, если есть что-то еще, на что я могу ответить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...