Текущий архив: 2003.11.24;
Скачать: CL | DM;
Вниз
Отладка PHP Найти похожие ветки
← →
VictorT (2003-10-30 23:38) [0]Как в php получить номер строки и имя файла, исполняемые в данный момент?
Если ближе к теме, то у меня есть такая функция, которую я использую всюду для SQL-запросов, нужно её модифицировать так, чтоб дополнительно к тем данным, которые она выдаёт, выдавалось ещё имя файла и номер строки, где произошла ошибка.
function query($sql)
{
$result = mysql_query($sql);
if (mysql_errno() != 0) {
echo "<font color=red><br>Якщо ви бачите це повiдомлення, звернiться до <a href=victor@galexpo.lviv.ua>розробника</a><br>";
echo mysql_errno().": ".mysql_error()."<br>";
echo $sql. "</font>";
}
return $result;
}
← →
VictorT (2003-10-31 00:15) [1]Имя файла нашёл - переменная окружения $PATH_TRANSLATED
← →
McSimm (2003-10-31 10:07) [2]Предопределенные константы:
__FILE__, __LINE__
← →
VictorT (2003-10-31 11:36) [3]
> McSimm © (31.10.03 10:07) [2]
О, спасибо, то что надо. Но возникает ещё проблемка. Нужно сделать так, чтобы вызов функции выглядел так:
query($sql);
Т.е. не надо было бы писать параметры __FILE__ __LINE__ в вызове. Как это можно сделать? В Си это можно было бы сделать с помощью макроса или парметра по умолчанию.
← →
MeF88 (2003-10-31 11:39) [4]
> Т.е. не надо было бы писать параметры __FILE__ __LINE__
> в вызове
Всмысле?
← →
VictorT (2003-10-31 11:52) [5]Попробовал написать функцию так:
function query($sql, $line=__LINE__, $file=__FILE__)
{
$result = mysql_query($sql);
if (mysql_errno() != 0) {
echo "<font color=red><br>Якщо ви бачите це повiдомлення, звернiться до <a href=mailto:victor@galexpo.lviv.ua>розробника</a><br>";
echo mysql_errno().": ".mysql_error()."<br>";
echo $sql. "<br>";
echo "Line:" .$line. ", file: " .$file;
echo $sql. "</font>";
}
return $result;
}
Но при выдаётся имя файла и номер строчки, где находится строка function query($sql, $line=__LINE__, $file=__FILE__) :(
← →
MeF88 (2003-10-31 12:05) [6]Попробуй так:
function query($sql)
{
$result = mysql_query($sql);
if (mysql_errno() != 0) {
echo "<font color=red><br>Якщо ви бачите це повiдомлення, звернiться до <a href=mailto:victor@galexpo.lviv.ua>розробника</a><br>";
echo mysql_errno().": ".mysql_error()."<br>";
echo $sql. "<br>";
echo "Line:" .__LINE__. ", file: " .__FILE;
echo $sql. "</font>";
}
return $result;
}
← →
VictorT (2003-10-31 12:09) [7]
> MeF88 © (31.10.03 12:05) [6]
Дак та же фигня получится... Выдаст имя файла и строку, где содержится
echo "Line:" .__LINE__. ", file: " .__FILE__;
А мне надо, чтоб выдавало номер строки и имя файла, где произошёл вызов функции.
← →
MeF88 (2003-10-31 12:13) [8]
> Дак та же фигня получится...
Ой. Что-то я тормознул...
Надо подумать...
← →
MeF88 (2003-10-31 12:28) [9]
> А мне надо, чтоб выдавало номер строки и имя файла, где
> произошёл вызов функции
Через __FILE__ и __LINE__ не покатит. Придется всегда их в параметрах указывать, чтобы выдавала верные цифры, хотя кажется можно сделать как-то иначе.
← →
VictorT (2003-10-31 12:40) [10]
> хотя кажется можно сделать как-то иначе.
Как?
З.Ы. Есть в PHP макросы?
← →
MeF88 (2003-10-31 13:00) [11]
> Есть в PHP макросы?
Есть, но, как мне кажется, они тебе не помогут.
> Как?
Не знаю. Разве что не выдавать номер строки и файла - вообще у меня структура кода несколько иная, поэтому таких проблем не возникало.
← →
VictorT (2003-10-31 13:07) [12]
> > Есть в PHP макросы?
>
> Есть, но, как мне кажется, они тебе не помогут.
А где можно почитать? Шо-то я никак не могу про них найти нифига.
← →
Style (2003-10-31 13:29) [13]Имя файла:
$_SERVER["PHP_SELF"]
не подойдет??
← →
VictorT (2003-10-31 13:43) [14]
> Style © (31.10.03 13:29) [13]
Дак я уже разобрался, как получить имя файла и номер строки. Вопрос теперь состоит в том, чтобы при вызове фукции не прописывать эти параметры.
← →
MeF88 (2003-10-31 14:10) [15]
> А где можно почитать? Шо-то я никак не могу про них найти
> нифига.
Попробуй посмотреть на http://www.webclub.ru/ - только я давно там не был, но вроде там было что-то про них.
← →
VictorT (2003-10-31 14:28) [16]http://rsdn.ru/Forum/Message.aspx?mid=427638
http://deep.webm.ru/forum/reply.php?num=1.7&id=50504
← →
NickBat (2003-10-31 14:33) [17]Перед запуском функции запомни номер этой строки в переменной
myline=__LINE__
← →
MeF88 (2003-10-31 14:34) [18]Забавная ф-ия dump() - через debug_backtrace() у меня не получалось сделать что-то вроде неё...
← →
VictorT (2003-10-31 14:34) [19]
> Попробуй посмотреть на http://www.webclub.ru/ - только я
> давно там не был, но вроде там было что-то про них.
Шо-то он на стадии умирания :(
← →
VictorT (2003-10-31 14:36) [20]
> NickBat © (31.10.03 14:33) [17]
> Перед запуском функции запомни номер этой строки в переменной
>
> myline=__LINE__
Дак вот как раз хочу избавится от необходимости делать лишние действия...
← →
MeF88 (2003-10-31 14:39) [21]
> Шо-то он на стадии умирания :(
А млин, они ж там чего-то намутили левого, раньше вроде всё ОК было...
> myline=__LINE__
А смысл? Проще уж __LINE__ в параметрах передавать, чем потом в ф-ии делать ...$GLOBALS["myline"]..., ну или просто global $myline; echo($myline); - разницы не будет никакой.
← →
MeF88 (2003-10-31 14:41) [22]
> Шо-то он на стадии умирания :(
Глянь на http://www.script-info.net/phpf/manphp4rus/index.php
← →
VictorT (2003-10-31 16:50) [23]Нашлось решение, кому интересно:
http://deep.webm.ru/forum/reply.php?num=1.7&id=50504
Страницы: 1 вся ветка
Текущий архив: 2003.11.24;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.01 c