Добавить в API простой "отладчик"

Рейтинг: -49.3792  
Новая
Предложил Болотов Филипп 17.02.2012 13:36:23

Добавить в API простой "отладчик"

Все мы, наверное, не раз встречали в коде компонентов и шаблонов конструкции вида:

echo '<pre>'; print_r($arResult); echo '</pre>';

Когда нужно быстро разобраться "почему не работает?" мы сами начинаем размножать эти "принты" в различных участках кода.

Предлагаю включить в API  (http://dev.1c-bitrix.ru/api_help/main/functions/debug) функцию вроде:

function eho($var, $die = false, $forall = false) { //универсальный дебагер
   global $USER;
   if ($USER->IsAdmin() || $forall) {
      $out = '<div style="background-color:#000; color:#0a0; font-size:14px; padding:10px;">';
      if (is_array($var) || is_object($var)) {
         $out .= '<pre>'.print_r($var, true).'</pre>';
      } else {
         $out .= 'Строка: '.$var;
      }
      echo $out.'</div>';
   }
   if ($die) die;
}
 
В чём плюсы:
  • компактность: eho($arResult);
  • отладку видят только админы (не пугаем простых пользователей);
  • можно завершать скрипт сразу после печати отладочной информации;
  • за счёт инлайн-стилей вывод будет различимым при любом оформлении.

Рейтинг: 0  
Яковенко Дмитрий 17.02.2012 14:56:36
Рейтинг: 0.5336  
Болотов Филипп 17.02.2012 15:28:55
http://marketplace.1c-bitrix.ru/solutions/mesilov.dbgtracer/#tab-images-linkЧем не устраивает модуль?
- всем устраивает, но нужно устанавливать :D Я же пишу "предлагаю включить" "функцию вроде". DbgTracer подходит, но его нет в API.
Рейтинг: 1.998  
Живетьев Александр 17.02.2012 16:42:23
Да, модуль действительно неудобно каждый раз ставить на каждый сайт. Удобнее было бы, если бы подобная возможность была бы в ядре.
Рейтинг: -0.5336  
andreya 20.02.2012 20:41:20
См. AddMessage2Log, mydump, SendError. Есть ли смысл плодить ещё аналоги?
Рейтинг: 1.6127  
Болотов Филипп 20.02.2012 23:25:56
AddMessage2Log - выводит информацию в файл (как следует из названия ;)) а не на экран
mydump - не учитывает, что вывод нужен только администратору
SendError - отправляет по почте

Все эти функции не решают простой задачи: вывод информации здесь и сейчас, при отладке компонента или своего функционала. Мне в процессе разработки не с руки проверять почту или логи.