Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

13.12.2009, 20:05
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
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(), все должно быть уже внутри класса.
|
|
|

13.12.2009, 20:24
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Решение номер 1 найдено с помощью метода анального тыка.Заключаеться в следующем:
PHP код:
class NameClass{
function GetError(){
$bg = debug_backtrace();
print_r($bg);
}
function foo(){
$error = false;
if(!$error){
$this->GetError();
}
}
Функция будет образовывать массив,столько-мерный,сколько вложений было произведено.Так что можно сказать решение найдено,но хотелось бы посмотреть что можно еще извлечь.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|