HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Debug кода,вывод ошибки.
  #1  
Старый 13.12.2009, 20:05
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами: 9223466

Репутация: 3171


По умолчанию Debug кода,вывод ошибки.

И так допустим,имеем некий код,оформленный в виде класса.Пускай вот так:
PHP код:
class NameClass{
function 
GetError(){
$line __line__;
$file __file__;
echo 
'Error in file:'.$file.'  line:' .$line;
}
function 
foo(){
$error false;
if(!
$error){
$this->GetError();
}

[test.php]
PHP код:
include('class.php');
$cl = new NameClass;
$cl->foo(); 
Собственно,мы нарочно вызываем сообщение об ошибке,с помощью ф-ции $this->GetError.
Но,в сообщении об ошибке,будет фигурировать не стока с ошибкой,а строчка,в которой была объявлена переменная $line.ТОже самое с $file;
так же была ипробована debug_backtrace();, но ее не очень удобно использовать,ибо вызывать прихоить непосредственно в методе $this->foo(), если вызов делать в $this->GetError - тотже результат что и с первым кодом,только будет фигурировать строка и файл,те,где была объявлена $this->foo().
Собственно вопрос,какими еще способами можно заставить корректно выводить строку и файл в ошибке,если это делать из соседнего файла,да к томже с вложенными функциями.Я уже пробывал даже адрес передавать заместо &__line__, .Собственно хочу услышать мнения экспертов.Да,главное,нельз передавать эти данные(линию,и файл) непосредственно при вызове нужной мне функции,тут $this->foo(), все должно быть уже внутри класса.
 
Ответить с цитированием

  #2  
Старый 13.12.2009, 20:24
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами: 9223466

Репутация: 3171


По умолчанию

Решение номер 1 найдено с помощью метода анального тыка.Заключаеться в следующем:
PHP код:
 class NameClass{
function 
GetError(){
$bg debug_backtrace();
print_r($bg);
}
function 
foo(){
$error false;
if(!
$error){
$this->GetError();
}

Функция будет образовывать массив,столько-мерный,сколько вложений было произведено.Так что можно сказать решение найдено,но хотелось бы посмотреть что можно еще извлечь.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки Windows и их устранение. Серый Windows 6 15.12.2006 14:44



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...