Часто для отладки шаблонов компонентов приходится выводит листинг результирующего массива $arArray и других вспомогательных массивов. Обычно для это используется стандартна функция PHP print_r(). Пример того, как сами разработчики Битрикс в коде шаблона компонента iblock.element.add.form используют это прием:
Я и сам часто это использовал, только без exit().
Чтобы было видно дальнейших ход выполнения страницы. Но в общем меня не устраивала не информативность функции print_r() и перегруженность вывода. К тому же вывод делался сразу после пролога и страница улетала далеко вниз...

Представляете массив на сотню элементов. Рука устанет перематывать эту простыню. И еще дублирующие элементы сами себя элементы с тильдами ~...
Все это с подвигло меня написать свою фунцию вывода отладочной информации, которая выводит массив внизу страницы и фильтрует вывод.
Вставляется она в конец файла шаблона сайта footer.php.
В самом шаблоне компонента, где нужно просмотреть результирующий массив вставляется строчка, типа:
Ничего сложного, происходит обращение к глобальной переменной.
Вот и вывод массива:
Крассным обозначаются массивы, синим строки, все остальное черное..

<? echo "<pre>Template arParams: "; print_r($arParams); echo "</pre>"; echo "<pre>Template arResult: "; print_r($arResult); echo "</pre>"; exit(); ?> |
Я и сам часто это использовал, только без exit().
<? echo "<pre>"; print_r($arResult); echo "</pre>";?> |
Чтобы было видно дальнейших ход выполнения страницы. Но в общем меня не устраивала не информативность функции print_r() и перегруженность вывода. К тому же вывод делался сразу после пролога и страница улетала далеко вниз...

Представляете массив на сотню элементов. Рука устанет перематывать эту простыню. И еще дублирующие элементы сами себя элементы с тильдами ~...
Все это с подвигло меня написать свою фунцию вывода отладочной информации, которая выводит массив внизу страницы и фильтрует вывод.
<?php //$GLOBALS["MY_DEBUG"]["X"] = Array("Debug help function, colors output",1,null, Array(0,1,2,3,4,5,6,7,8,9)); function print_my_debug() { if(empty($GLOBALS["MY_DEBUG"])) return ""; echo "<pre style='font-size:10px;'>"; function wrap($color, $text) { return "<span style='color:".$color."'>".$text."</span>"; } function filter_tilda_keys(&$a) { static $level = 0; $tab = " "; $len = 0; foreach($a as $k=>$v) { if(substr($k, 0, 1) != "~") { if(is_array($v)) { echo str_repeat($tab, $level).wrap("red", $k)."\n"; if(!empty($v)) { $level++; filter_tilda_keys($v); } } elseif(is_string($v)) { echo str_repeat($tab, $level).wrap("blue", $k)." = ".(strlen($v) < 40 ? $v : substr($v, 0, 40)."…")."\n"; } else { echo str_repeat($tab, $level).wrap("black", $k)." = ".$v."\n"; } //if($len++ > 2 && $level != 0) {echo str_repeat($tab, $level).wrap("red", "N(".count($a).")")."\n";break;} } } $level--; echo ""; } filter_tilda_keys($GLOBALS["MY_DEBUG"]); //print_r($GLOBALS["MY_DEBUG"]); echo "</pre>"; } print_my_debug();?> |
Вставляется она в конец файла шаблона сайта footer.php.
... </body> </html> |
В самом шаблоне компонента, где нужно просмотреть результирующий массив вставляется строчка, типа:
<?$GLOBALS["MY_DEBUG"] = $arResult?> |
Ничего сложного, происходит обращение к глобальной переменной.
Вот и вывод массива:
Крассным обозначаются массивы, синим строки, все остальное черное..
