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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Имя файла по handle в PHP

Июнь 15, 2016 г.

Всем привычна схема, при которой известно имя файла, и вы совершаете с ним какие то манипуляции. В PHP много функций, которые предоставляют именно такой функционал. Что делать, когда есть только file handle? Как получить имя открытого файла? ...

Читать

Удаление элементов из массива в PHP

Ноябрь 11, 2015 г.

Массивы в PHP - один из мощнейших инструментов программиста. Когда я начинал изучать PHP, у меня был определенный багаж знаний работы с массивами в других языках программирования, таких как C++, Delphi и Fortrain. Везде требовалось объявить массив, указать ...

Читать

 

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

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



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