Зачем тебе сетка, глупенький?
Сетка нужна только для того, чтобы убедить всяких упоротых рецензентов в том, что это действительно тридэ. Впрочем иногда сеткой можно хвастаться, но ZBrush — не тот случай.
Я согласен, но это всё же частный случай маппера. Поэтому — вид сбоку, со стороны реляционных баз данных.
К примеру, в текущем проекте мне потребовались мапперы для хранения моделей в Active Directory.
Doctrine — тот же маппер, вид сбоку. Впрочем ладно, чёрт с ними, с тонкостями реализации. Наша с Вами основная задача — убедить автора статьи в необходимости такой абстракции.
Вы не подумайте что я издеваюсь, но почему после выхода zf 2.0 пропадёт необходимость в мапперах? Я просто не в курсе, там что-то принципиально новое обещается?
Вот пример контроллера, который позволяет просмотр и редактирование пользовательского профиля.
Используется активная инверсия зависимостей для получении параметров.
class Users_ProfileController extends Zend_Controller_Action
{
protected $user;
public function init()
{
$this->user = new Users_Model_User();
if (!$this->user->find( $this->_getParam('id') )) {
return $this->_forward( /* 404 Not found */ );
}
}
public function indexAction()
{
$this->view->user = $this->user;
}
public function editAction()
{
$form = new Users_Form_User();
$this->view->form = $form;
$form->populate( $this->user->getOptions() );
if (!$this->getRequest()->isPost()) {
return;
}
if (!$form->isValid( $this->getRequest()->getPost() )) {
return;
}
$this->user->setOptions( $form->getValues() );
$this->user->save();
$this->_forward('index');
}
}
Вы как хотите, а я попробую.
Сетка нужна только для того, чтобы убедить всяких упоротых рецензентов в том, что это действительно тридэ. Впрочем иногда сеткой можно хвастаться, но ZBrush — не тот случай.
К примеру, в текущем проекте мне потребовались мапперы для хранения моделей в Active Directory.
Используется активная инверсия зависимостей для получении параметров.
class Users_ProfileController extends Zend_Controller_Action { protected $user; public function init() { $this->user = new Users_Model_User(); if (!$this->user->find( $this->_getParam('id') )) { return $this->_forward( /* 404 Not found */ ); } } public function indexAction() { $this->view->user = $this->user; } public function editAction() { $form = new Users_Form_User(); $this->view->form = $form; $form->populate( $this->user->getOptions() ); if (!$this->getRequest()->isPost()) { return; } if (!$form->isValid( $this->getRequest()->getPost() )) { return; } $this->user->setOptions( $form->getValues() ); $this->user->save(); $this->_forward('index'); } }А о связях между таблицами советую почитать в руководстве. А затем вынести все эти связи как минимум в маппер.
найду и расковыряю.