Как вы обрабатываете ошибки при использовании сервисного уровня? - PullRequest
2 голосов
/ 15 мая 2011

в моем проекте Zend Framework я использую сервисный уровень, однако я не знаю, где обрабатывать ошибки.

Например, допустим, у меня есть UserService::updateUser($data);

Что если у меня есть:

$data = array(
   'userId' => 2,
   'firstName' => 'Jane',
   'lastName'  => 'Doe',
);

А пользователя с идентификатором 2 не существует?

Где и как бы вы справились с такими ошибками?

1 Ответ

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

Вы можете перенаправить на определенный контроллер для обработки всех ваших бизнес-ошибок, например:

if ($error=true)
        return $this->_forward('standarderror', 'businesserror', 'default',
                array('msgtitle' => $this->view->translate('item_not_found'),
                    'msg' => $this->view->translate('item_not_found_msg')));

и где ваш BusinesserrorController выглядит так:

class BusinesserrorController extends Zend_Controller_Action {

public function init() {
    $this->_helper->viewRenderer->setNoRender();
}

public function standarderrorAction() {
    $msgtitle = $this->_getParam('msgtitle');
    $msg = $this->_getParam('msg');

    $this->view->errortitle = $msgtitle;
    $this->view->errormessage = $msg;

    $this->view->nextstep = $this->view->translate('return_to_the_homepage');
    $this->view->nextstepurl = "/";

    echo $this->render('error/businesserror', null, true);
}

}

вы также можете параметризовать переадресованный URL;)

...