Получить номер текущей строки в PHP

Для логгирования иногда важно не только записать какое то сообщение, но также указать — где именно произошло событие в скрипте. Давайте посмотрим, как можно получить номер строки и имя файла в PHP.

Данная информация может быть предоставлена php функцией debug_backtrace(), которая предоставляет информацию о состоянии стека вызова функций в виде массива.

Пример массива, который возвращает debug_backtrace():

Здесь есть имя файла и номер строки, где была вызвана некая функция getInfo.

Оформим нашу идею в виде функции, которая возвращает описание места в скрипте, откуда она была вызвана в программе:

Т.е. если мы вызовем её где то в нашей программе, она вернет нам имя файла и номер строки.

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

Виртуальный лог

Оформим эту идею в виде виртуального класса.

Основная функция класса — log выводит сообщение просто на экран, поэтому я назвал класс виртуальным. А чтобы сообщение сохранялось в базу или в файл — требуется переписать эту функцию в дочернем классе.

Вторая особенность — функция log не добавляет имя файла и номер строки в сообщение, сохраняя возможность прямого вывода. Вместо этого реализованы еще два метода, которые это делают. Один из них error, принимает на входе объект Exception и использует его данные. А второй — message — использует уже знакомую функцию getInfo.

Пользоваться классом просто:

Скрипт выведет что то вроде следующего:

Логгирование в файл

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

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

Ну и пример с обработкой исключения:

Мало букафф? Читайте есчо !

Определение версии браузера - PHP или javascript?

Май 17, 2011 г.

Хорошо если ваш сайт работает во всех, или почти во всех браузерах так, как вы того хотите. Все меняется, выходят новые версии, появляются новые возможности, и глупо их не использовать, в угоду "старичкам". Года 1,5 назад IE 6.0 (судя по статистике посещений ...

Читать

Вывод анонсов статей с картинкой, в Wordpress

Август 5, 2013 г.

Сформулируем задачу. Нужно вывести 3 (а в общем случае N) анонсов новостей, с картинкой, в шаблоне на главной странице сайта. Этот кусочек должен выглядеть ...

Читать

PHP: функция преобразования к каноническому пути

Январь 26, 2021 г.

На замену realpath, который работает только с реально существующими файлами и папками UNIX, а также не работающий для ссылок, я написал функцию получения канонического пути. В документации встречается функция eio_realpath, которая требует подключения ...

Читать

Функция сравнения двух строк на PHP

Август 1, 2017 г.

Насколько похожи две строки? В PHP для выяснения подобия строк есть две функции - similar_text() и levenshtein(). Первая из них считает процент ...

Читать
 

Комментарии к «Получить номер текущей строки в PHP»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: