Есть несколько полезный магических констант в php которые я сдесь опишу. Магические константы начинаются с двух символов подчеркивания и заканчиваются тоже с двух символов подчеркивания.
В данной заметке рассмотрим 3 константы
__LINE__
__FILE__
__DIR__
По названию, думаю должно быть сразу понятно для чего эти константы. Но кто не понять объясню –
__LINE__ выводим номер строки, в которой эта константа находится.
__FILE__ выводит файл текущего документа.
__DIR__ папка текущего файла.
Рассмотрим на примере две первые константы. Например, у нас есть самописная функция, в которой вызывается запрос в базу, а код запроса передается через параметры функции.
function db_query($sql) {
$q=mysql_query($sql) or die(mysql_error()."
<strong>".__file__. " On line - ".__line__."</strong>");
return $q;
}
В функции выше при ошибке вызывается функция die, которая прекращает работу скрипта и выводит сообщение, которое определенно в ее параметрах. Только в примере выше номер строки в которой произошла ошибка будет выведена неправильно, так как вызов функции происходит в любом месте скрипта или даже в другом файле.
функция, что выше будет всегда показывать одну и туже строку и один и тот же файл, так как эти константы определенны внутри функции. Чтобы вывод ошибки правильно работал нужно переписать так функцию -
function db_query($sql, $file=__file__, $line=__line__) {
$q=mysql_query($sql) or die(mysql_error()."
<strong>".$file. " On line - ".$line."</strong>");
return $q;
}
Теперь в параметрах функции мы передаем номер файла и номер строки в результате при возникновение ошибки в sql запросе будем знать файл и номер строки где ошибка произошла.