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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Написать комментарий

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

Сохранение файла, загруженного на сервер с помощью PHP

Январь 29, 2021 г.

Эта статья о некоторых задачах, возникающих при сохранении файла на сервере, при получении его от пользователя через форму (<input type="file" />). Определимся с требованиями. Технически, решение нужно в виде функции, которая принимает набор ...

Читать

DOMDocument кодировка при сохранении в HTML

Декабрь 20, 2016 г.

PHP поддерживает работу с классом DOMDocument, но есть некоторые особенности, которые требуют внимания. Одна из них - это html кодирование символов, если вы не укажете в заголовке документа мета информацию о кодировке. Рассмотрим пример: [crayon-685e38af1d96c382537634/] ...

Читать

 

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

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



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