PHP с использованием exit () - PullRequest
3 голосов
/ 22 сентября 2010

Я использую Cakephp, но это сомнение MVC / php

letting the view display the message

против

echo 'Invalid Data'; exit;

Я хотел бы знать, есть ли подводные камни во втором случае, такие как утечка памяти и т. Д. Какой из них лучше

EDIT

В случае вызова ajax - выход хороший. а как насчет утечки памяти и других вопросов. Все переменные освобождены

Ответы [ 4 ]

6 голосов
/ 22 сентября 2010

Вы должны использовать пользовательский ExceptionHandler (set_error_handler / set_exception_handler) и генерировать исключение, если вы столкнетесь с какими-либо ошибками (CakePHP уже должен предоставить ExceptionHandler). Создайте некоторое пространство в вашем представлении и, если у ExceptionHandler / ErrorHandler есть сообщение, покажите его там, чтобы сообщить пользователю.

Ваш второй код просто создаст пустую страницу с небольшим текстом. Каждый пользователь будет признателен, если вы покажете сообщение внутри вашего обычного макета страницы, а не создадите пустую страницу (которая для большинства людей выглядит испорченной).

3 голосов
/ 22 сентября 2010

Инструментами Cake для оповещения пользователей об ошибках являются сообщения сеанса и представления ошибок.

Для «пассивных» действий, таких как действия просмотра, вы должны генерировать ошибку 404 или аналогичную, возможно, более специализированную, например, еслиЗапрошенная модель не существует:

function view($id) {
    $data = $this->Model->read(null, $id);
    if (!$data) {
        $this->cakeError('error404');
    }

    ...
}

См. Обработка ошибок с CakePHP .

Для любого действия POST вы должны вернуть пользователя в представление и отобразить ошибкусообщение с использованием $this->Session->setFlash('Error!') и соответствующие сообщения об ошибках для каждого недопустимого поля формы.Это поведение по умолчанию для запеченных представлений и контроллеров.

Завершение всего сценария с помощью exit делает работу пользователя ужасной.

0 голосов
/ 22 сентября 2010

с точки зрения производительности (AJAX cals)

Использование exit().


с учетом опыта пользователя (стандартная навигация по сайту)

Показать ошибку на правильно оформленной странице, удерживая пользователя на вашем сайте.

0 голосов
/ 22 сентября 2010

В общем, вам следует избегать exit.Exit - это ненормальное завершение , и программы не должны завершаться ненормально.Даже если произошла ошибка, нужно еще многое сделать - очистить, зарегистрировать, уведомить пользователя и т. Д. В конце концов, ваша операционная система не перезагружается каждый раз, когда не может открыть файл.

...