Статьи и новости

Modx: настройка отладки сниппетов при помощи xDebug

Короче, возникла тут нужда потыкать палкой это поделие великихъ кодеровъ. Долго не мог разговаривать без использования исконно русских слов и выражений. Теперь к сути.

Modx не выполняет непосредственно код из сниппета, даже если Вы запихнули его в админку как статический файл. Вместо этого он перекладывает код в кэш и уже затем выполняет его. Соответственно, чтобы при использовании xDebug точки остановы устанавливать в исходнике, а не в неясном кэше, пришлось писать костыль.

Автор не несёт ответственности за кровь из глаз, которая может пойти, если долго смотреть на фрагмент ниже.

#где-то в файле index.php - так проще всего
function enableXDebug(): string
{
    return 'if(false === strpos(__FILE__, realpath($this->_sourceFile))){ '
        . 'include($this->_sourceFile); return;'
        . '}';
}

Затем в самом начале отлаживаемого сниппета вызываем функцию

<?php 

eval(enableXDebug());

//...тут ваш сниппет

Не за что.

P.S. Кто молодец, может переписать красивше и добавить проверки на наличие/включённость xDebug, мне лень. Все равно штука на 95% для локальной разработки.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *