Вывод отладочной информации в файл
JDump предназначен только для Joomla, имеет ограничения на размер выводимой переменной и открывает всплывающее окно, что не всегда удобно.
Чтобы обойти его, можно вывести значения нужных переменных в файл следующим приемом.
Этот способ так же подходит для отладки скриптов обрабатывающих ajax запросы.
file_put_contents( __DIR__.'/test.txt', print_r($html, true) );
Если надо вывести несколько переменных, то можно использовать такой прием.
$test[__FILE__.' '.__LINE__.' $product_decode'] = $product_decode; $test[__FILE__.' '.__LINE__.' $product_info'] = $product_info; $test[__FILE__.' '.__LINE__.' $product_encode'] = $product_encode; file_put_contents( __DIR__.'/test.txt', print_r($test, true) );
Для Joomla удобно использовать такой вариант вывода.
file_put_contents( JPATH_CACHE.'/test.txt', print_r($test, true) );
Тогда лог будет находиться в папке кеша, и не придётся заморачиваться с правами на запись в папку.
Вывод всех определенных в данном месте переменных.
file_put_contents(__DIR__.'/test.txt', print_r(get_defined_vars(),true));
Если надо создать новый или дописать данные в существующий файл, то применяется следующая конструкция.
$test[__FILE__.' '.__LINE__.' $product_decode'] = $product_decode; $test[__FILE__.' '.__LINE__.' $product_info'] = $product_info; $test[__FILE__.' '.__LINE__.' $product_encode'] = $product_encode; file_put_contents( __DIR__.'/test.txt', print_r($test, true),FILE_APPEND );
Вывод прочей информации.
Для вывода списка подгруженных файлов скрипта можно использовать следующую конструкцию.
register_shutdown_function(function() { $test['included files'] = get_included_files(); file_put_contents( __DIR__.'/test.txt', print_r($test, true),FILE_APPEND ); });
Она будет исполнена по завершении скрипта.
Если нужен стек вызова, надо написать:
$test['backtrace'] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); file_put_contents( __DIR__.'/test.txt', print_r($test, true),FILE_APPEND );
DEBUG_BACKTRACE_IGNORE_ARGS - это для уменьшения расхода памяти.