- Главная»
- Уроки»
- CSS»
- Создание красивых сообщений с помощью CSS
- Метки урока:
- подсказки
- сообщения
В данном уроке Вы научитесь создавать красивые сообщения с помощью CSS. Кроме этого, Вы также узнаете как ими правильно пользоваться.


Давайте начнем с типов сообщений
1. Информационные сообщения
Цель этих сообщений информирования пользователя. Такие сообщения должны быть голубыми, так как люди ассоциируют этот цвет с информацией. Это может быть любая информация, которая может быть полезна юзеру.

2. Сообщения об успехе
Сообщения об успехе должны быть показаны после того, как юзер успешно выполнил какую-либо операцию. Успешно — означает полностью и без ошибок. Обычно такие сообщения зеленого цвета.

3. Сообщения-предупреждения
Подобные сообщения должны быть показаны пользователю если операция не может быть завершена. Обычно они желтого цвета.

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

5. Сообщения проверки
Еще один тип сообщений. Я предпочел для них оранжевый цвет. Подобные сообщения показывают пользователю его ошибки (например, при заполнении форм).

Теперь давайте посмотрим как такие сообщения создать
Нам понадобится следующий код CSS:
body{
font-family:Arial, Helvetica, sans-serif;
font-size:13px;
}
.info, .success, .warning, .error, .validation {
border: 1px solid;
margin: 10px 0px;
padding:15px 10px 15px 50px;
background-repeat: no-repeat;
background-position: 10px center;
}
.info {
color: #00529B;
background-color: #BDE5F8;
background-image: url('info.png');
}
.success {
color: #4F8A10;
background-color: #DFF2BF;
background-image:url('success.png');
}
.warning {
color: #9F6000;
background-color: #FEEFB3;
background-image: url('warning.png');
}
.error {
color: #D8000C;
background-color: #FFBABA;
background-image: url('error.png');
}
.validation {
color: #D63301;
background-color: #FFCCBA;
background-image: url('validation.png');
}
Данный код можно вставить как в тот же файл, так и вынести в таблицу стилей.
Теперь нам достаточно в теле документа создать слой с необходимым классом:
<div class="info">Info message</div>
<div class="success">Successful operation message</div>
<div class="warning">Warning message</div>
<div class="error">Error message</div>
<div class="validation">Validation message</div>
Заключение
Сообщения очень важный элемент любого интерфейса. Очень часто их вообще не используют. Не повторяйте эту ошибку и пользуйтесь подобными сообщениями! И желаю Вашим пользователям как можно меньше сообщений об ошибках!!! 🙂
5 последних уроков рубрики «CSS»
-
Забавные эффекты для букв
Небольшой эффект с интерактивной анимацией букв.
-
Реализация забавных подсказок
Небольшой концепт забавных подсказок, которые реализованы на SVG и anime.js. Помимо особого стиля в примере реализована анимация и трансформация графических объектов.
-
Анимированные буквы
Эксперимент: анимированные SVG буквы на базе библиотеки anime.js.
-
Солнцезащитные очки от первого лица
Прикольный эксперимент веб страницы отображение которой осуществляется “от первого лица” через солнцезащитные очки.
-
Раскрывающаяся навигация
Экспериментальный скрипт раскрывающейся навигации.
Перевод краткого руководства от UX-писателя BBC Эми Лик.
Ошибки на сайте возникают и по вине системы, а иногда и по вине пользователя. Чтобы их было легко исправить, важно писать чёткие, логичные и доступные сообщения.
Определите, с какой ошибкой столкнулся пользователь
Прежде чем составлять сообщение, убедитесь, что знаете ответы на эти вопросы:
- Что произошло?
- Как это случилось?
- Как это исправить?
- Ошибся пользователь, система или все вместе?
- Можно ли изменить текст этого сообщения? Операционная система может контролировать некоторые сообщения об ошибках.
Структура текста
Чтобы исправить ошибку, сначала нужно узнать, в чём она состоит. Сообщение будет выглядеть примерно так: ошибка → как её исправить.
Довольно простая структура. Вот пример реального сообщения об ошибке в одну строчку.
Бывает, система не может указать, что именно произошло.
В примере ниже мы специально описываем ошибку в общих чертах. Лучшее, что можно сделать при проблемах с интернетом, — подсказать пользователю, как он может всё исправить.
Пишите коротко и ясно
Нужно помочь пользователям быстро исправить ошибку, чтобы они могли дальше заниматься своими делами.
Сообщение должно быть кратким и лаконичным. Избавьтесь от лишних слов, оставьте только нужные. Главное — не перестарайтесь: краткость не должна ставить под угрозу ясность сообщения. Не вырезайте из текста важные детали.
Системная ошибка
Если ошибка произошла по вине системы, извинитесь перед пользователем. Но если в этом виноват пользователь — будьте аккуратны. Извинения звучат неискренне там, где им не место. К тому же неуместные извинения могут сбить с толку — пользователь подумает, что не виноват в ошибке, раз система говорит «простите».
Чтобы принять ответственность за случившееся, используйте активный залог. Пишите: «Мы не можем сохранить ваши изменения», а не «Ваши изменения не могут быть сохранены».
Ошибка пользователя
Иногда ошибки появляются по вине пользователя. Но сообщить об этом можно мягко и без осуждения.
В примере ниже сделали акцент на том, как исправить ситуацию, а не на забывчивости пользователя.
Пассивный залог удобно использовать, когда ошибка произошла по вине пользователя. Он поможет смягчить неприятную ситуацию, например, когда «Ваша карта была отклонена».
Используйте правильный тон
Тон сообщения будет зависеть от серьёзности ошибки. Мягкость в словах отлично подходит для мелких ошибок, но для более критических стоит подбирать слог построже.
Избегайте спецтерминов и всегда изъясняйтесь просто. Пользователь должен чувствовать, что вы стараетесь помочь ему и понятно объяснить, что делать. Помните, мы говорим с людьми, а не с машинами.
Пожалуйста, не пытайтесь умничать. Не время для шуток и креатива, когда у пользователя проблема. Шутки или креатив только испортят текст сообщения и усилят чувство разочарования.
Что случится, если нажать на кнопку
Для устранения некоторых ошибок могут потребоваться СТА-кнопка или ссылка. Иногда бывает нужна кнопка отмены.
Всегда объясняйте, что будет, если нажать на кнопку или ссылку. Их текст должен быть понятным, даже если прочитать его отдельно, вне сообщения об ошибке. Это поможет незрячим пользователям перемещаться по интерактивным элементам. Тем, кто бегло прочитал сообщение, тоже будет легче сориентироваться.
Не используйте просто слово «Ок». Что оно значит? С помощью «Ок» можно подтвердить отмену действия или его совершение. Сделайте так, чтобы пользователю было понятно, с чем он соглашается.
Время и место
Сообщения об ошибках должны принимать во внимание все действия пользователя. Время и место появления сообщения помогают понять, что произошло. Это помогает пользователю исправить ошибку.
- Что вызывало это сообщение?
- Когда оно появилось?
- Где появилось?
- Понятно ли, с чем оно связано?
Задавая эти вопросы, не забывайте, что есть пользователи с ограниченными возможностями. Это подталкивает к новым вопросам:
- Как мы можем помочь всем пользователям перейти к решению?
- Может ли ошибка слишком встревожить пользователя или быть навязчивой, появившись в этот конкретный момент?
- Как связать сообщение с соответствующим разделом визуально и не визуально?
Помните, что сообщения об ошибках — не барьеры. Они существуют, чтобы расширять возможности, успокаивать и направлять пользователей.
Ключевые рекомендации
- Определите, с какой ошибкой столкнулся пользователь и как её исправить.
- Пишите коротко и ясно.
- Используйте нужный тон и только уместные извинения.
- Дайте понять, что будет, если нажать на кнопку или ссылку.
- Учитывайте время и место появления сообщения. Не забывайте про то, как воспримут его пользователи с ограниченными возможностями.
Любая система допускает ошибки. Это может быть как человеческий фактор, так и ошибка самой системы. В обоих случаях, нужно правильно эти ошибки отображать, так как они являются очень важным элементом пользовательского опыта.
Вот 3 жизненно важных части любого хорошего сообщения об ошибке:
- Четкое текстовое сообщение
- Правильное размещение
- Хороший визуальный дизайн
Четкое текстовое сообщение
1. Сообщение об ошибке должно быть понятным
Сообщение об ошибке должно четко говорить о том, какая именно ошибка произошла, почему она произошла, и что с этим делать. Думайте об этом сообщении, как об общении с пользователем — оно должно звучать так, будто оно написано для человека, а не для машины. Убедитесь, что ваше сообщение вежливо, понятно, дружественно, и не содержит жаргона.

2. Сообщение об ошибке должно быть полезным
Не достаточно просто написать, что что-то пошло не так. Покажите пользователю, как он может исправить проблему.
Например, Microsoft описывает проблему, и прямо в сообщении об ошибке предоставляет вариант ее решения.

3. Сообщение об ошибке должно подходить под определенную ситуацию
Очень часто, веб-сайты используют одно сообщение об ошибке для всех схожих состояний. Оставили пустым поле ввода электронного адреса — «Введите правильный электронный адрес», пропустили символ «@» — «Введите правильный электронный адрес». MailChimp решает эту проблему иначе — они используют 3 разных сообщения об ошибке для каждого состояния процесса подтверждения электронной почты. Сначала проверяется, заполнено ли поле ввода. Затем проверяется введены ли символы «@», и «.».

4. Сообщение об ошибке должно быть вежливым
Не вините пользователей в том, что они что-то не так сделали, даже если это так. Будьте вежливы, дайте им почувствовать себя комфортно.

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

Правильное размещение
Хорошее сообщение об ошибке — это такое сообщение, которое вы увидите. Размещайте его рядом с элементами интерфейса, с которыми ошибка непосредственно связана.

Правильный визуальный дизайн
Сообщение об ошибке должно быть заметным. Используйте контрастный текст и фоновые цвета, чтобы пользователь мог легко его рассмотреть и прочесть.
Обычно, используется красный цвет. В некоторых случаях желтый или оранжевый (некоторые ресурсы утверждают, что красный цвет нервирует пользователей). Как бы то ни было, убедитесь, что ваш текст разборчив, и хорошо контрастирует с фоном. Не забудьте внедрить в сообщение связанную с ним иконку — это улучшит доступность сообщения для людей с нарушенным восприятием цветов.

Заключение
Сообщения об ошибках — это отличный способ улучшить пользовательский опыт. Чтобы ваше сообщение стало действительно идеальным, уделите внимание всем аспектам — языку, размещению, и визуальному дизайну.
Предыдущая статья
F-паттерн: как пользователи просматривают контент
Следующая статья
Метрики, за которыми должен следить любой SEO аналитик

Источник изображения
Бесперебойное время работы веб-сайта (website up-time) – важнейший показатель надежности функционирования ресурса в сети, параметр, который непременно должны отслеживать веб-маркетологи, интернет-предприниматели и IT-специалисты.
Однако независимо от величины средств, которые вы вложили в обеспечение надежной непрерывной работы вашего сайта/целевой страницы/коммерческого веб-портала, надеясь на то, что «уж теперь-то больше ничего и никогда не выйдет из строя», ваш ресурс все равно может «упасть». Да, это печально, но разного рада неприятности имеют обыкновение происходить в жизни чаще, чем нам бы хотелось. 😉
Примем этот факт как непреодолимое обстоятельство, и подумаем о реакции посетителей, которые при посещении веб-ресурса увидят в окне своего браузера печально знаменитое «сообщение об ошибке 404» (сервер не может найти данные согласно запросу пользователя, «страница не найдена»).
Диапазон чувств посетителей может простираться от понимающего «ну ничего, зайду попозже» до разгневанного «я просто обезумел от горя, ноги моей больше не будет на этом сайте!».
В последнем случае вы явно бессильны что-либо изменить, но вот менее раздражительным посетителям вы можете заметно смягчить чувство разочарования от временной недоступности вашего ресурса или отсутствия на сервере запрашиваемой страницы, показав им забавные, оригинальные, остроумные сообщения об «ошибке 404». Посетители непременно высоко оценят ваш творческий подход к оформлению печальных известий о недоступности запрошенных данных. 🙂
1. Digg
Digg – социальный новостной сайт, который собирает новости со всего интернета и компилирует их на одном сайте для удобства своих читателей. У сайта Digg множество поклонников, на самом деле ждущих публикации подборки свежих новостей, так что когда новостной ресурс «падает», его создателям приходится искренне извиняться за причиненные неудобства, вывешивая вот это забавное сообщение:

«У нашей повозки сломалась колесная ось, но мы можем продать скот для оплаты ремонта и скорейшего возвращения к вам».
2. Tumblr
У вас проблемы с сервисом Tumblr? В этом виноваты Тумбестии (Tumbeasts)! Замечательные анимационные персонажи, созданные командой рисовальщиков комиксов The Oatmeal, от имени администрации Tumblr сообщают посетителям, что сервис временно недоступен, поскольку «Гадкие Тумбестии погрызли все серверы».

3. Google Wave
В 2009 году Google создал сервис Google Wave, объединяющий электронную почту, систему обмена мгновенными сообщениями, веб-чаты, социальные сети и инструменты для совместного управления проектами. Google Wave прекратил свое существование в 2010 году, а для тех, кто все еще не в курсе произошедших событий, была заготовлена такая вот «страница 404», сообщающая о прекращении проекта:

«Серфинга не будет, чувак. Волна улеглась навсегда. Время расслабиться».
4. Blippy
Некогда в Глобальной сети существовал сайт Blippy, позволявший потребителям обмениваться отзывами о товарах и услугах. Прежде чем он был окончательно «снесен» в мае 2011 года, он сообщал пользователям о своей недоступности вот такой картинкой.

5. Grooveshark
Grooveshark в своем сообщении об ошибке продвигается на шаг дальше, чем другие веб-сервисы: посетители могут ознакомиться с увлекательной историей о том, как гигантская панда и маринованные огурчики будто бы стали причиной недоступности сайта. Пользователи улыбаются забавному рассказу и меняют гнев на милость.

6. Reddit
Reddit – еще один социальный новостной сайт, собирающий интересную информацию по всему Интернету, и позволяющий посетителям оценивать ее путем голосования. Привыкшие работать с развлекательным контентом, владельцы Reddit сделали великолепную «страницу 404», позволяющую посетителям их сайта не скучать даже в то время, когда основное содержимое этого ресурса недоступно для просмотра.

7. Mint.com
Mint.com – сайт, собирающий все финансовые документы пользователей «в одном месте», тем самым помогая контролировать, например, семейный бюджет. Финансы – это очень серьезно. Поэтому клиенты, не могущие получить доступ к важной финансовой информации, приходят в негодование практически мгновенно. Для того, чтобы поднять настроение недовольных посетителей, Mint сделал одну из самых веселых «страниц ошибки» в Глобальной сети. Персонажа, «проживающего» на ней, зовут Джастин, и он уже обзавелся целой армией преданных поклонников.

8.Taptaptap
Taptaptap – это компания, которая создает приложения для iPhone, и знает, что всем нравятся забавные детские фотографии, вроде той, что показывается посетителям их сайта при возникновении «ошибки 404».

9. Twitter
Уведомление об ошибке от сервиса микроблогов Twitter, возможно, самое известное из подобных сообщений. Когда Twitter перегружен запросами, появляется вот этот симпатичный кит. Увы, но он так часто предстает перед глазами посетителей, что скоро станет популярней знаменитой птички Twitter!

10. HubSpot
Да, подобные неприятности случаются и с признанными специалистами в области интернет-технологий! Когда сервис HubSpot «ложится в даун», на странице сообщения об «ошибке 404» посетители могут видеть неподдельное раскаяние, написанное на лице главного IT-специалиста HubSpot Тома Каттанео (Tom Cattaneo). Все видят, как ему стыдно? 🙂

Помните, что творческий подход полезен во всем, даже в создании страницы «ошибки 404»!
- Основные элементы продающей целевой страницы
- Анатомия идеальной целевой страницы
- 19 причин, по которым вы должны использовать визуальные материалы в ваших маркетинговых стратегиях
09-11-2012
За последние 24 часа нас посетили 8828 программистов и 850 роботов. Сейчас ищут 402 программиста …
Страница 3 из 4
-
вовсе нет. смотри третий скрин и пояснение к нему.
-
Хочу поделиться своими результатами обработки ошибок в графическом интерфейсе. Раньше у меня была проблема, что ошибка в любой модели обрывала все и отображалась в виде красного X-Debuga. Круто да?
Следующим этапом был перехват ошибок в set_error_handler() если я не ошибаюсь и отображение в балее меннее красивом окне сообщения об ошибке. Но у этого метода есть недостатоки. Во- первых он не видет форму, чтобы смотреть то что он ввел и одновременно читать в чем не прав, а во- вторых, когда он нажмет кнопку «Назад» все данные, которые он ввел теряются. Маты были жуткие.
На третьем этапе борьбы появились конструкции try catch вокруг всех пользовательских действий. Вывод стал красивым вверху страницы и данные сохранялись. Это уже была победа. Но неудобно, что на кождом действии приходится писать этот try — catch и обрабатывать эти исключения одним и тем же кодом. Поэтому появилась идея вывести этот код за пределы экшена.
И только сейчас можно сказать, что я победил эту проблему раз и навсегда. Данные теперь сохраняются, страница отображается с сообщением для пользователя, я для этого ничего не делаю. Мечта программиста. Доволен как слон.
у меня у контроллера (класс Cont) контрол есть такой метод, который связывает пользовательское действие с обработчиком. выгладит это так:
-
* связывает событие с обработчиком. срабатывает на EVENT | EVENT_x | EVENT[ ]
-
* @param string $event ключ массива $_REQUEST input_key => key
-
* @param string $handler название функции- обработчика
-
* @param bool $continue продолжать после обработчика дальнейшую обработку? может быть насильственно проделжен возвратом return ‘continue’
-
public function bindAction($event, $handler, $continue= false){
-
if (isset($_REQUEST[$this->input().‘_’.$event]) || isset($_REQUEST[$this->input().‘_’.$event.‘_x’])){
-
$result= $this->$handler();
-
if (!$continue && $result!=‘continue’)
-
foreach ($_REQUEST as $PARAM=>$value)
-
if (eregi(«^{$event}\[[.*]\]$», $PARAM)){
-
$result= $this->$handler();
-
if (!$continue && $result!=‘continue’)
А для того чтобы автоматизировать передачу исключений пользователю, я переопределил этот метод у контралера страницы вот так
-
* необработанная ошибка приводит к отображению формы на момент ошибки с соответствующим сообщением
-
* @param string $event событие
-
* @param string $handler обработчик
-
* @param bool $continue продолжить после обработки события может быть насильственно проделжен возвратом return ‘continue’
-
function bindAction($event, $handler, $continue= false){
-
parent::bindAction($event, $handler, $continue);
-
//после PDOException на повтор отправлять нельзя, т.к. транзакция все равно оборвалясь
-
//ошибка во время акшэна -> на повтор
-
unset ($_REQUEST[$this->input().‘_’.$event]);
-
unset ($_REQUEST[$this->input().‘_’.$event.‘_x’]);
-
unset ($_REQUEST[$this->input().‘_’.$event.‘_y’]);
-
$page->show($this->input());
-
// //варнинги во время сохранения — показать, но не обрывать
-
// $page->error= new WarningException(ob_get_clean());
При этом, что очень важно, все данные, которые ввел пользователь, включая выбранные фaйлы, сами собой сначала пихаются в модель, а потом повторно отображаются на странице. Ну и естественно, поскольку контроллеры всех страниц пронаследованы от PageCont, на всем сайте сам собой получился однообразный вывод ошибок. очень стильно, очень предсказуемо для пользователя. И конечно радует, что я пишу только код, а если возникает ошибки, то они сами обрабатываются и отображаются пользователю.
Вот несколько примеров, когда действия пользователя дергают модели и натыкаются там на эксепшины. И вот как это отображаются (в принципе вьюшку эксепшена можно нафантазировать как угодно):
![[IMG]](https://php.ru/forum/threads/krasivyj-vyvod-iskljuchenij-i-oshibok.18147/proxy.php?image=http%3A%2F%2Fsavepic.ru%2F636617m.jpg&hash=7e9200a2cf3dc37830950038ae17219b)
![[IMG]](https://php.ru/forum/threads/krasivyj-vyvod-iskljuchenij-i-oshibok.18147/proxy.php?image=http%3A%2F%2Fsavepic.ru%2F633545m.jpg&hash=e948771d1edc0b6a2e9bc3ada7600164)
![[IMG]](https://php.ru/forum/threads/krasivyj-vyvod-iskljuchenij-i-oshibok.18147/proxy.php?image=http%3A%2F%2Fsavepic.ru%2F634569m.jpg&hash=7ff3c2a81ab6ddfbd7893eaf4e792b76)
![[IMG]](https://php.ru/forum/threads/krasivyj-vyvod-iskljuchenij-i-oshibok.18147/proxy.php?image=http%3A%2F%2Fsavepic.ru%2F631497m.jpg&hash=5d170bcd020f9d97bf317b77f712f7bd)
![[IMG]](https://php.ru/forum/threads/krasivyj-vyvod-iskljuchenij-i-oshibok.18147/proxy.php?image=http%3A%2F%2Fsavepic.ru%2F632521m.jpg&hash=03b5c749b64f4e9a39739b6122d3d207)
![[IMG]](https://php.ru/forum/threads/krasivyj-vyvod-iskljuchenij-i-oshibok.18147/proxy.php?image=http%3A%2F%2Fsavepic.ru%2F637641m.jpg&hash=efbcaed3bdd7ac2156fa689862957394)
Понимаете в чем фокус такого трюка? сколько эксепшенов наберется во всех моделях? наверное сотни. Они могут добавляться и удаляться. Но я ни разу не беспокоюсь чтобы их обрабатывать и отображать пользователю. Сюда же входят эксепшены чужих библиотек на сотом уровне вложенности, про которые я ничего не знаю и знать не хочу. меня вообще больше эта проблема не волнует. Если, к примеру даже добавлю новый эксепшен внутри какого- то метода модели, и пользователь на него нарвется, то он и увидет этот эксепшен в верхней части формы, и его данные сохранятся на форме, все это произойдет автоматически, для этого ни строчки не надо писать в форме.
-
-

Koc
Активный пользовательесть файл
ob_start();
какой-то код
var_dump(smth);
бросаем исключение
еще какой-то кодесть обработчик исключения, установленный через set_exception_handler, который выводит бектрейс, код ошибки и тд. В нем 1 строкой прописано ob_end_flush(); (что б увидеть что var_dump нам скажет). Но выводится только бектрейс. Что я делаю не так?
если в конструктор класса с исключениями запихнуть ob_end_flush(); то вывод работает. Это так задумано шоле? Фича такая?
-

Костян
Активный пользователь- С нами с:
- 12 ноя 2009
- Сообщения:
- 1.724
- Симпатии:
- 1
- Адрес:
- адуктО
Koc
да, точно не скажу, но вроде исключения убивают буфер… -

Костян
Активный пользователь- С нами с:
- 12 ноя 2009
- Сообщения:
- 1.724
- Симпатии:
- 1
- Адрес:
- адуктО
хотя не должны, а ты уверен что буферизация стартовала?
-
Koc
Активный пользовательокей, если буферизация не стартовала, то куда делся мой вар_дамп? Кто его съел?
-
А ты уверен что до него дошло дело?
-

Koc
Активный пользовательгарантирую это. Кроме того половина страницы должна отрендериться была. Если я отказываюсь от этого обработчика исключений (удаляю или комментирую строку с его назначением) то var_dump показывает то, что нужно, и пол-страницы видно.
Кроме того:
function debug_exception_handler($ex) {
echo «<b>Error :</b>», $ex->getMessage().»<br />n»;
}
сообщение пустое. Убираю этот ссаный обработчик — сообщение выводится.Пошел я спать. Не заладилось как-то программирование сегодня.
-
Ммм, а как ты его повесил?
Если через error_handler, то там не 1 параметр надо передавать. -
Koc
Активный пользовательset_exception_handler(‘debug_exception_handler’);
-
Все отлично работает.
Можешь раскомментировать echo $r и убедиться.-
function exception_handler($exception) {
-
echo «Uncaught exception: « , $exception->getMessage(), «n«;
-
set_exception_handler(‘exception_handler’);
-
echo ‘гарантирую это. Кроме того половина страницы должна отрендериться была. Если я отказываюсь от этого обработчика исключений (удаляю или комментирую строку с его назначением) то var_dump показывает то, что нужно, и пол-страницы видно.
-
function debug_exception_handler($ex) {
-
echo «<b>Error :</b>», $ex->getMessage().»<br />n»;
-
сообщение пустое. Убираю этот ссаный обработчик — сообщение выводится.
-
Пошел я спать. Не заладилось как-то программирование сегодня.’;
-
$a = array(‘nothing’, ‘to’, ‘output’);
-
throw new Exception(‘Uncaught Exception’);
-
-

Koc
Активный пользовательгага!! Вот разгадка почему так происходило
-
public function render(array $context)
-
$this->display($context);
это шаблонизатор буйствовал.
-
-

Koc
Активный пользовательчерез register_shutdown_function отлавливаю fatal error’ы. Хочу сделать backtrace — но он пуст. Вернее не то что бы полностью пуст, но в нем только мои обработчики ошибок находятся.
Как быть?
-

Koc
Активный пользовательПо всей видимости это действительно невозможно. Что ж, придется довольствоваться get_included_files
-
Koc
код выложи.
Обработчик + вызов Fatal error -

Koc
Активный пользователь-
public static function c()
-
D::c(); // тут кой-че будет
хотя я наверно некорректно понимаю что такое backtrace. Это ж не просто какие-то последние действия, а именно действия по вызову этой функции? Тогда логично, что ничего оно мне не покажет.
-
-
-
public static function c() {
-
D::c(); // тут кой-че будет
-
-
-
‘message’ => string ‘Using $this when not in object context’ (length=38)
-
‘file’ => string ‘/home/simpliest/work/test/host1/eh.php’ (length=35)
-
‘function’ => string ‘{main}’ (length=6)
-
‘file’ => string ‘/home/simpliest/work/test/host1/eh.php’ (length=35)
-
‘function’ => string ‘b’ (length=1)
-
‘file’ => string ‘/home/simpliest/work/test/host1/eh.php’ (length=35)
-
‘function’ => string ‘a’ (length=1)
-
‘file’ => string ‘/home/simpliest/work/test/host1/eh.php’ (length=35)
-
‘function’ => string ‘p’ (length=1)
-
‘class’ => string ‘D’ (length=1)
-
‘file’ => string ‘/home/simpliest/work/test/host1/eh.php’ (length=35)
-
‘function’ => string ‘eh’ (length=2)
-
‘file’ => string ‘/home/simpliest/work/test/host1/eh.php’ (length=35)
-
-

Koc
Активный пользовательну, круто конечно, но мне б более универсальное решение, без xDebug’а. Про error_get_last я знаю.
В общем это баг backtrace или все нормально?
-
Понятия не имею.
Поищи в баглисте.Хотя вряд ли баг. Можешь посмотреть еще APD, как альтернативу xdebug, возможно там тоже есть более глубокий трейс.
-

Костян
Активный пользователь- С нами с:
- 12 ноя 2009
- Сообщения:
- 1.724
- Симпатии:
- 1
- Адрес:
- адуктО
-
Костян
Нахрена?-
for ($i = 1; $i < 5; $i++) {
-
echo ‘started ‘ . $i . ‘<br>’;
-
-

Костян
Активный пользователь- С нами с:
- 12 ноя 2009
- Сообщения:
- 1.724
- Симпатии:
- 1
- Адрес:
- адуктО
-
for ($i = 1; $i < 5; $i++) {
-
echo ‘started ‘ . $i . ‘<br>’;
-
throw new Exception(‘OOOOOpss’);
-
И?
что изменилось?
Страница 3 из 4