И снова здравствуйте.
По ходу работы, часто приходится производить отладку и прочие замеры, и руками писать всякие записи в файлы не очень-то оптимально. Бывает, вижу что кто-то подключает свои файлы, и использует функции оттуда, для упрощения отладки. Но в продукте есть отдельные инструменты, которые могут упростить данную операцию.
Вывод данныхИтак, есть у нас вызов АПИ, и хочется увидеть, с какими параметры в данном месте производится вызов. Лично я предпочитаю запись в файл, чтобы никак не влиять на работу сайта (разные проверки ip и прочее лениво писать).
Код для записи в файл получится компактным:
Bitrix\Main\Diag\Debug::writeToFile(array('ID' => $id, 'fields'=>$fields ),"","prices.txt"); |
тут у нас первым параметром идет сами данные, которые мы хотим увидеть, вторым идет название переменной, а третьим - имя файла (можно указывать путь, к примеру
/bitrix/log.txt)
я лично сразу пишу много данных и сразу в массиве указываю подходящие ключи, поэтому второй параметр не использую |
на выходе получим примерно такое:
Array
(
[ID] => 26028
[fields] => Array
(
[PRODUCT_ID] => 54586
[CATALOG_GROUP_ID] => 1
[^PRICE] => 1840
[CURRENCY] => RUB
[QUANTITY_FROM] =>
[QUANTITY_TO] =>
[PRICE] => 1840
[RECALC] =>
)
) |
если же могут быть булевы переменные, то можно и так указать:
Bitrix\Main\Diag\Debug::dumpToFile(array('ID' => $id, 'fields'=>$fields ),"","prices.txt"); |
вывод соответственно будет через var_dump
Учет времениЕсли же надоучесть время выполнения того или иного участка кода, то и для этого есть подходящие функции.
В начале исследуемого участка кода, добавляем:
Bitrix\Main\Diag\Debug::startTimeLabel('test'); |
в конец:
Bitrix\Main\Diag\Debug::endTimeLabel('test'); |
И для вывода используем:
Bitrix\Main\Diag\Debug::getTimeLabels(); |
метод возвращаем массив со всеми включенными учетами времени |
HelperТакже есть вспомогательный класс
Helper (Bitrix\Main\Diag\Helper), в котором всего пару функций:
Bitrix\Main\Diag\Helper::getCurrentMicrotime(); |
и
Bitrix\Main\Diag\Helper::getBackTrace($limit = 0, $options = null); |
думаю, из названия и так понятно, для чего они нам могут пригодиться.