Отладка кастомных методов
Если вы создали кастомный метод, или использовали готовое решение с сайта wiki.umisoft.ru, но метод не работает так как вы ожидали, или на сайте вообще белый экран, то необходимо отлаживать (debug) ваш метод. Вы являетесь разработчиком, раз выполняете подключение кастомным методов, и в первую очередь как раз вы и должны решать возникшие вопросы некорректности работы какого-либо кастомного метода. Перед отладкой, желательно включить debug в конфигурационном файле config.ini, для вашего ip_адреса, а далее использовать любую удобную вам конструкцию, для вывода промежуточных данных вашего метода, для того чтобы понять в чем проблема, на каком месте все ломается, не проходит нужное условие, не приходят нужные данные. К примеру, это может быть:
var_dump($result); exit;
Подобная конструкция постепенно перемещается по вашему методу, с самого начала до проблемных строк кода.
В некоторых случаях, если не поставить:
exit;
то вы можете не увидеть каких-либо данных, т.к. наша система перед выводом данных сайта очистит буфер, в который попали ваши данные по отладке. Желательно конечно, чтобы данные по отладке были видны только с вашего компьютера, тогда используем конструкцию вида:
if($_SERVER['REMOTE_ADDR'] == '127.127.127.127'){ var_dump($result); exit; }
или:
if($_SERVER['HTTP_X_REAL_IP'] == '127.127.127.127'){ var_dump($result); exit; }
вместо 127.127.127.127 – необходимо подставить ip вашего компьютера. Если вы отлаживаете ваш сплиттер для модуля "Обмен данными", не забываем про существование fireBug’a, браузера FireFox, смотря запросы, вкладку "Ответ", можно проверить ваши отладочные данные.
В php есть достаточно полезная функция debug_backtrace, которая позволяет видеть цепочку выполненных методов, перед вызов этой функции в месте отладки. Стандартный вызов следующий:
var_dump(debug_backtrace()); exit;
более удобный вид отображения данных:
if($_SERVER['REMOTE_ADDR'] == '127.127.127.127'){ $backtrace = debug_backtrace(); foreach($backtrace as $arr){ $str = ''; if(isset($arr['file'])) $str.= 'file: ' . $arr['file']; if(isset($arr['line'])) $str.= '<br/> line: ' . $arr['line']; if(isset($arr['function'])) $str.= '<br/> function: ' . $arr['function']; if(isset($arr['args'])){ $str.= '<br/> args: '; foreach($arr['args'] as $key => $value){ $value = (is_object($value)) ? get_class($value) : $value; $str.= "[{$key}] => " . $value . ' '; } } echo $str . '<br/><br/>'; } exit; }