![](https://habrastorage.org/storage2/f47/860/23d/f4786023d3b3da09b1c270a002ab10e4.png)
При работе с веб-приложениями, иногда бывает тяжело только по URL определить, какой именно контроллер/модуль/скрипт обрабатывает запрос. Особенно это актуально, когда в команде разработчиков появляется новый сотрудник, и ему приходиться изучать архитектуру приложения и конфиги маршрутизации.
В принципе, эта проблема решается, если в dev-окружении в приложение подключается какой-нибудь плагин/модуль (например Profiler в Symfony), отображающий имя файла или класс контроллера, или если используется какой нибудь отладчик. Но все-таки, куда удобнее перейти к исходнику прямо со страницы в браузере. О том, как мы реализовали это в AdMe, читать под катом.
Все началось с того, что я, не найдя готовых решений, решил написать небольшой плагин Profiler для ZendFramework 1 (именно он используется в проектах нашей компании). В dev-окружении этот плагин добавляет фиксированный блок внизу страницы, содержащий некоторую полезную информацию, включая название контроллера и действия. Для AJAX запосов эта информацию пишется в HTTP заголовки.
Идею развил мой руководитель PavelRadaev, предложив использовать интересный инструмент LinCastor, разработанный товарищем onflapp, за что ему большой респект. Инструмент позволяет определить собственную URL-схему (напр. znd-file://) и указать приложение, которое будет обрабатывать подобные запросы, а также, что немаловажно, позволяет удалять префиксы этой схемы при передаче URL приложению. Инструмент написан для Mac OS, но думаю для других ОС можно найти (ну или разработать) аналог.
Итак, мы определили URL-схему znd-file, указали приложение для обработки Zend Studio и установили удаление префикса.
В итоге, URL вида
znd-file:///Users/linar/Desktop/dev/test.php
преобразовываются в
file:///Users/linar/Desktop/dev/test.php
и передаются в Zend Studio, который, в свою очередь, прекрасно открывает файлы по данному URL.
![](https://habrastorage.org/storage2/30c/fba/37d/30cfba37d9240d8229cc83476deb9a20.png)
Теперь осталось в плагине Profiler прописать ссылку на файл контроллера таким образом, чтобы файл нормально открывался у всех разработчиков в их локальной версии. В нашем случае это оказалось просто, т.к. у всех разработчиков локальные версии всех проектов лежали в одной рабочей папке в подпаках с названием домена проекта. Таким образом, мы все просто создали символическую ссылку /phpdev на эту рабочую папку, а ссылки на файлы стали иметь вид
znd-file:///phpdev/project.domain/src/AdMe/Article/Controller/Index.php
и вуаля, переход к файлу контроллера из браузера работает. Приятно удивило то, что Zend Studio открывает файлы в рамках проекта, не смотря на то, что открывается он через URL да еще и через символическу ссылку.
Так же в плагин были добавлены ссылки на все использованные вьюхи. Как это выглядит, видно на картинке выше. Оказалось это на столько удобным, что решено было в ближайшее время написать обработку заголовков ajax запросов либо средствами JavaScript/jQuery, либо даже через плагин к браузеру.
Разумеется, в той или иной степени, подобный инструмент можно реализовать и для других IDE и других скриптовых языков программирования (а если извратиться, то и для компилируемых, надо лишь правильно настроить ссылки на исходники).