Yandex Metrika
sanches.free

Где в коде объявлена функция PHP: ReflectionFunction в отладке Битрикс

Задача

В большом дереве модулей и /bitrix/ неочевидно, в каком файле живёт нужная процедура. Вместо поиска по проекту «в лоб» иногда достаточно спросить у рантайма PHP, где функция была определена.

Минимальный пример

$ref = new ReflectionFunction('bx_mail');
echo $ref->getFileName() . ' определена в ' . $ref->getStartLine();

Имя функции задаётся строкой так же, как в обычном вызове. Для методов класса используйте ReflectionMethod по классу и имени метода — отдельный сценарий, но та же идея «зафиксировать» исходный файл и номер строки.

На что обратить внимание

  • Отражение недоступно, если функция ещё не загружена — сначала убедитесь, что нужный файл подключён через автозагрузку или явный include.
  • Часть обёрточных функций в ядре Bitrix может вести в сгенерированный или промежуточный слой — смотрите итоговый путь здраво.
  • Для отладки безопаснее запускать фрагмент на копии сайта или в ограниченном CLI-скрипте с нужным контекстом ядра.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии