[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Exception. Немного больше чем просто информация
m4a1fox
Все доброго времени суток. Итак собственно к делу. Как работают исключения, я разобрался. Собственно занимательно очень там все происходит. Меня больше интересует несколько другой подход-реализация той информации кот. выводится. Как известно то что показывают нам методы исключения, немножко мало(инфы), хочется как-то это расширить. А именно сделать следующее: Как вытащить php-код той строки, где произошла ошибка? Насколько я понимаю, то это уже не к исключению больше относится, а к реализации на самом языке...

Итак. Логика. Если произошло исключение то: берем файл с ошибкой, ищем в нем строку с ошибкой, или запрос и показываем на экран. Так же? Или есть проще способ. Кто делал свои исключения - прошу отозваться и подсказать в какую сторону копать нужно?! Всем спасибо за внимание.



Спустя 7 минут, 39 секунд (29.03.2012 - 14:28) Invis1ble написал(а):
У Exception есть ведь интерфейс, getTrace(), getFile(), getLine() и т.д. С ним и работай.

Спустя 3 минуты, 35 секунд (29.03.2012 - 14:32) m4a1fox написал(а):
Invis1ble
Цитата
У Exception есть ведь интерфейс, getTrace(), getFile(), getLine() и т.д. С ним и работай.

Есть есть... С ними пока что и работаю...

Спустя 5 минут, 31 секунда (29.03.2012 - 14:37) Invis1ble написал(а):
Цитата
Как вытащить php-код той строки, где произошла ошибка? Насколько я понимаю, то это уже не к исключению больше относится, а к реализации на самом языке...

$exception->getFile(), $exception->getLine() -> file_get_contens() -> вывод нужной строки

Спустя 20 минут, 9 секунд (29.03.2012 - 14:57) zeromind написал(а):
помню по курсам Специалиста, подобное (или расширенная работа с ошибками) реализовывалось с помощью Reflection или SPL, точню сказать не могу..

Спустя 6 часов, 30 минут, 34 секунды (29.03.2012 - 21:28) VolDroN написал(а):
debug_backtrace() ?

Спустя 59 минут, 11 секунд (29.03.2012 - 22:27) m4a1fox написал(а):
VolDroN
Цитата
debug_backtrace() ?

Нет нет.... я не это имею ввиду... Мне интересно сама практическая реализация вот такого момента.
Имеем $e->getFile() && $e->getLine()
Нужно, взять этот файл и вытащить из него 5 строчек до ошибки и 5 после ошибки.
Просто способов куча есть... я например использовал file($e->getFile())

Спустя 1 час, 28 минут, 58 секунд (29.03.2012 - 23:56) m4a1fox написал(а):
Итак... думаю кто нибудь все равно заглянет сюда как нибудь...
Вот так сделал... не кошерно...
Как упростить можно?


function printFile($file, $line){
$fopen = file($file, FILE_IGNORE_NEW_LINES);
$code = '<table border="1" cellpadding="0" cellspacing="0">';
$start = $line-6;
$end = $line+5;
for($t = $start; $t<$end; $t++){
$start++;
if($start==$line){
$code .= '<tr bgcolor="red">';
$code .= '<td>'.$start.'</td><td>'.trim($fopen[$t]).'</td>';
$code .= '</tr>';
}else{
$code .= '<tr>';
$code .= '<td>'.$start.'</td><td>'.trim($fopen[$t]).'</td>';
$code .= '</tr>';
}
}


$code .= '</table>';

print_r($code);

}


Спустя 1 день, 21 час, 20 минут, 20 секунд (1.04.2012 - 21:16) Лена написал(а):
Зачем гонять циклы, если есть функции для работы с массивом.
Если коротко:

$fopen = file($file, FILE_IGNORE_NEW_LINES);
print_r(array_slice($fopen,$line-6,10));


И дальше работаете с полученным массивом, как хотите: if(четвертый элемент массива == $line) подкрашиваем строку красным цветом.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.