Локализация ошибок в PHP-коде
30 октября 2008, 14:41
Автор: 1234ru
Проблему опишу сразу на примере.
При отправке SQL-запроса с помощью функции mysql_query() для своего же блага следует организовывать обработку ошибок, т.е. для каждого запроса нужно писать нечто вида
Каждый раз это писать неудобно, поэтому можно сделать маленькую функцию-"обертку":
Всё бы хорошо, да только вот при использовании такой функции исезает возможность понять, в каком конкретно месте программы был отправлен ошибочный SQL-запрос. Ошибка всегда будет относиться к строке кода, находящейся внутри объявления функции mysql_q() - той, где она непосредственно происходит, т.е. всегда в одном и том же месте:
Можно ли как-нибудь вытащить номер строки "из-под" функции mysql_q(), т.е узнать, из какого места этой функции был передан неправильный параметр?
(может быть, это какие-нибудь классы позволяют?)
При отправке SQL-запроса с помощью функции mysql_query() для своего же блага следует организовывать обработку ошибок, т.е. для каждого запроса нужно писать нечто вида
mysql_query() or die(mysql_error()); // или что-то подобное
Каждый раз это писать неудобно, поэтому можно сделать маленькую функцию-"обертку":
function mysql_q($sql) {
return mysql_query($sql) or die(mysql_error());
}
return mysql_query($sql) or die(mysql_error());
}
Всё бы хорошо, да только вот при использовании такой функции исезает возможность понять, в каком конкретно месте программы был отправлен ошибочный SQL-запрос. Ошибка всегда будет относиться к строке кода, находящейся внутри объявления функции mysql_q() - той, где она непосредственно происходит, т.е. всегда в одном и том же месте:
<?php
$wrong_sql = 'SQL-запрос с ошибкой';
$result = mysql_q($wrong_sql); // ошибка будет относиться НЕ к этой строке кода, хотя интересна именно она
function mysql_q($sql) {
return mysql_query($sql) or die(mysql_error()); // вот к какой строке будет относиться ошибка
}
?>
$wrong_sql = 'SQL-запрос с ошибкой';
$result = mysql_q($wrong_sql); // ошибка будет относиться НЕ к этой строке кода, хотя интересна именно она
function mysql_q($sql) {
return mysql_query($sql) or die(mysql_error()); // вот к какой строке будет относиться ошибка
}
?>
Можно ли как-нибудь вытащить номер строки "из-под" функции mysql_q(), т.е узнать, из какого места этой функции был передан неправильный параметр?
(может быть, это какие-нибудь классы позволяют?)