Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Вниз

Отладка 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>&q­uot;;
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.013 c
14-79136
Alibaba
2003-10-31 22:28
2003.11.24
Иконки


6-79076
MSTX
2003-09-29 16:25
2003.11.24
IP и маска подсети


14-79161
Е-Моё имя
2003-10-31 11:50
2003.11.24
Задачка


14-79170
Дремучий
2003-10-30 21:41
2003.11.24
Excel -- взять значение по ссылке собраной вручную....


1-78964
ed_30
2003-11-14 19:05
2003.11.24
Сохранение в поток





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский