Console — интерактивная отладка MODX
Console появилась как простой способ выполнять PHP-код непосредственно внутри авторизованного MODX Manager и сразу видеть результат. Компонент был опубликован ещё в 2011 году и превратил административную часть MODX в своего рода интерактивную рабочую среду для разработчика.
Практическая ценность Console особенно проявляется при работе с xPDO и processors. Вместо создания временного сниппета или отдельного PHP-файла разработчик может выполнить запрос, получить объект, вызвать processor и посмотреть его фактический ответ прямо в runtime конкретного сайта.
Это хорошо сочетается с архитектурой modxSite, где прикладные операции строятся вокруг processors. Console позволяет проверять эти операции независимо от frontend: увидеть входные данные, ответ, ошибки и поведение текущей версии системы.
Поэтому спустя много лет Console остаётся полезной и при модернизации legacy-проектов. Когда новый frontend создаётся поверх старого backend, она помогает сначала проверить реальное поведение существующей логики, а уже затем строить вокруг неё новый интеграционный слой.
История сохранения и загрузки кода
Функции сохранения кода Console в файлы и загрузки из файлов появились не в исходной версии компонента. 31 августа 2015 года Сергей Шлоков опубликовал заметку «[Console] Сохраняем код в файл». В своём форке он реализовал сохранение текущего кода в файл и последующую загрузку файла обратно в Console.
В той же публикации Сергей отдельно отметил, что ранее благодаря Илье Уткину Console уже умела сохранять код в $_SESSION. Это была отдельная, более ранняя возможность и к импорту/экспорту через файлы она напрямую не относилась.
1 сентября 2015 года в комментариях к этой заметке Максим (pathologic) предложил добавить аналогичное сохранение и загрузку для MODX-сниппетов. Сергей принял идею и реализовал её.
3 сентября 2015 года он опубликовал отдельную заметку «[Console] Сохраняем код в сниппет», где сообщил, что Console теперь умеет сохранять и загружать код как из файлов, так и из сниппетов, а pull request с этой доработкой уже отправлен Николаю Ланцу.
При разборе pull request Николай провёл ревью реализации, обратил внимание на вопросы прав доступа и безопасности файловых операций и существенно переработал архитектуру этой части компонента.
В релизе Console 2.1.0-beta, опубликованном 5 сентября 2015 года, сохранение и загрузка кода через сниппеты и файлы уже вошли в официальный компонент. Одновременно были переработаны процессоры и проверки прав, проведён рефакторинг, добавлена работа с вложенными каталогами и возможность хранить поставляемые с компонентом скрипты в files/global.
Таким образом, корректная атрибуция этой функции выглядит так: первоначальную реализацию импорта/экспорта файлов сделал Сергей Шлоков; идею поддержки сниппетов предложил Максим, а реализовал её также Сергей; Николай Ланец провёл ревью, существенно переработал реализацию и включил её в официальный релиз Console 2.1.0-beta. Илья Уткин к файловому и сниппетному импорту/экспорту напрямую не относится — его более ранний вклад состоял в сохранении кода Console в $_SESSION.
Console — часть общей экосистемы компонентов Fi1osof. Историческое описание компонента опубликовано на Habr.