Если ваш веб-сайт перехватывает исключение, о котором вы хотите сообщить пользователям в качестве обратной связи, каков элегантный способ справиться с этим, не сталкиваясь с этими проблемами:
Ошибка произошла в середине страницы, и если вы сразу распечатаете сообщение об ошибке при обнаружении, оно будет находиться где-то посередине сломанной страницы.
Использование ob_start () может гарантировать, что вы печатаете контент только после того, как он был обработан, и нет ошибок, исправляя проблему в 1), но он несет в себе снижение производительности, которого лучше избегать.
Перенаправление на новый или тот же URL-адрес после обнаружения ошибки может работать очень хорошо (например, перенаправление обратно в форму входа в систему, если пользователь отправил неверный пароль, с сообщением об ошибке или на общую страницу для более серьезных ошибок при сбое приложения). ). Это оставляет вас склонным к цепочке перенаправлений ошибок (хотя и рекурсивных), что приведет к истечению времени ожидания запросов, в результате чего пользователь или разработчик вообще не получат четкого сообщения об ошибке. Постоянное перенаправление на ошибки, особенно ошибки сбоя приложения, кажется плохой идеей из-за этого.
Я заметил, что использование ob_clean () БЕЗ ob_start () работает в моем проекте, удаляя отраженный контент уже на странице. Но руководство php утверждает, что оно не должно работать без ob_start () и даже не должно очищать отраженный HTML, просто то, что было в буфере. Что здесь происходит?
Вместо ob_start вы можете сохранить все операторы print / echo в $ array = array (). Насколько я понимаю, снижение производительности меньше, но это может сделать код уродливым.
Ценим помощь
Что-то, что я делаю, это то, что у меня есть индекс, который включает необходимые страницы, поэтому, например, если вы хотите увидеть страницу контактов, вы бы запросили index.php?page=contact
Код выглядит примерно так
$return_code = 1;
$return_code = include($page.'.php');
if ($return_code != 1) {
echo '<div class="error">'.$return_code.'</div>';
}
На своей странице контактов вы делаете все, что вам нужно, и если есть ошибка, и вы хотите остановить выполнение страницы и просто отобразить ошибку, просто сделайте возврат
<?php
// If an error happens, simply
return "Error text";
?>
Других решений пока нет …