IDE phpStorm как инструмент разработки в MODX
Долгое время я пользовался простыми и быстрыми редакторами для разработки, типа Geany и Notepad++. Просто не понимал, зачем мне тяжеловесная IDE, если и этих редакторов хватает с головой?

Я помню свой код, что откуда выходит и как работает, зачем мне подсказки от программы, которая грузится полторы минуты? Тем более, я люблю по-быстрому забежать на сервер, подправить пару опечаток и сохранить файл. Мне не нужно создавать проект, синхронизировать его с сервером и т.д.
Однако, всё поменялось, когда я написал miniShop. Компонент вышел большой, и со временем я понял, что просто запутываюсь в нём. Заодно я понял, что допустил много грубых ошибок, по незнанию — например доставучие уведомления о необъявленных переменных или ключах массива, те самые — E_NOTICE.
Поэтому, когда я засел за Tickets, сразу решил писать его в IDE phpStorm, чтобы таки разобраться в ней и упростить себе разработку. Поначалу было непросто, но я быстро втянулся.
Сразу говорю, всё освоено методом тыка, без чтения литературы или чьих-то инструкций. Подозреваю, что освоил я процентов 5 от общего функционала, однако и этот объем позволил мне работать радикально быстрее и выдавать в разы более качественный код.
IDE я выбирал как обычно, просто наугад. Конечно, поглядел конкурентов, но в целом, все IDE показались мне на одно лицо. Однако, у phpStorm есть несколько неоспоримых преимуществ:
1. Возможность получить OpenSource лицензию на год, бесплатно.
2. Хоть весь интерфейс и на английском, но компания российская и работают там русские люди, в основном.
3. phpStorm советуют сами авторы MODX. Раньше даже давали лицензию своим партнёрам.
Об этом выборе я не только не пожалел, но даже купил 2 нормальных лицензии на последней распрадаже, вместо OpenSource — чтобы поддержать разработчиков.
Для начала расскажу, как у меня налажено производство компонентов.
Основной инструмент — домашний сервер с Ubuntu, настроенной по собственной заметке, с доступом через SSH и SFTP. Все проекты располагаются к корне сайта, каждый в своей директории. При этом, директории замонтированы внутрь сайта через --bind.
То есть, на сайте одни и теже файлы находятся в двух местах. MODX считает, что компоненты у него разложены в нужных директориях, а я могу синхронизировать эти директории с github и phpStorm.
На ноутбуке phpStorm, в котором лежат все нужные проекты, настроенный на синхронизацию с сервером. То есть, код одновременно лежит и на сервере и на ноуте. Это полезно, в случае непредвиденной атаки терористов на ваш хостинг.
Справа картинка, где стрелочками показано, что куда монтируется. Если захотите сделать также — вот команда:
Коммиты в репозиторий я присылаю из консоли сервера. Можно настроить это и на ноуте (и даже в IDE), но пока руки не дошли.
Итак, есть тестовый сайт с грамотно разложенными компонентами, которые нам нужно разрабатывать. Осталось настроить IDE для работы с ними.
После создания проекта нужно зайти в Settings -> Deployment -> Options и установить Always в параметре загрузки обновлений на сервер. Теперь все изменения на локальном компе будут мгновенно синхронизироваться с удалённым, и вы сможете проверять результаты своей работы.

Настройки шрифтов редактора находятся в Editor -> Colors & Fonts -> Font. Можно скачать и установить разнообразные темы. Лично мне нравятся Twilight и Monokai с шрифтом Ubuntu Mono.
А теперь самое главное — нужно подключить файлы MODX, чтобы во время разработки IDE подсказывала нам, откуда что наследуется.
Для этого качаем свежую версию дистрибутива MODX, распаковываем на локальный компьютер и указываем:

Сюда можно подключать не только MODX, но и любые другие компоненты\библиотеки, которые будет использовать ваше расширение, например, pdoTools.
Теперь при наборе $modx-> IDE будет вам подсказывать методы класса MODX, с параметрами.
Мы правильно настроили phpStorm и уже наслаждаемся подсказками, автодополнениями и прочими вкусняшками IDE.
Однако, чтобы автодополнение правильно работало, нужно указывать, где какие ипользуются классы. Делается это комментарием перед объявлением переменной.
Если вы пишите что-то не то, IDE проверяет и подчеркивает ошибки красным. Если вы объявляете и не используете переменную — она будет более бледной, чем другие. Если пытаетесь использовать переменную, которая не видна в текущем цикле\условии — будет warning и подчеркивание желтым.
При наведение на проблемные участки вылезают подсказки, где расписано, в чем ошибка. Особо непонятные можно и загуглить.
В общем, phpStorm на лету проверяет основные ошибки областей видимости, незакрытых переменных и прочие вещи, которые не нужно допускать в хорошем коде.
Также, если вам нужно перейти на объявление метода — кликните на него и нажмите Ctrl+B. Словами трудно объяснить, поэтому записал коротюсенькое видео.
phpStorm — отличный инструмент, который экономит кучу времени и оберегает от множества ошибок. Совершенно не представляю, как я раньше без него работал?
Да, он требует определённой организации труда, но вы всё равно рано или поздно к ней придёте, если хотите делать интересные и полезные вещи для MODX Revolution.
А если нет — зачем вы это читаете?
Прислали ссылочку на канал phpStorm с обучающими видео. Всем рекомендую — www.youtube.com/playlist?list=PLQ176FUIyIUbfeFz-2EbDzwExRlD0Bc-w

Я помню свой код, что откуда выходит и как работает, зачем мне подсказки от программы, которая грузится полторы минуты? Тем более, я люблю по-быстрому забежать на сервер, подправить пару опечаток и сохранить файл. Мне не нужно создавать проект, синхронизировать его с сервером и т.д.
Однако, всё поменялось, когда я написал miniShop. Компонент вышел большой, и со временем я понял, что просто запутываюсь в нём. Заодно я понял, что допустил много грубых ошибок, по незнанию — например доставучие уведомления о необъявленных переменных или ключах массива, те самые — E_NOTICE.
Поэтому, когда я засел за Tickets, сразу решил писать его в IDE phpStorm, чтобы таки разобраться в ней и упростить себе разработку. Поначалу было непросто, но я быстро втянулся.
Сразу говорю, всё освоено методом тыка, без чтения литературы или чьих-то инструкций. Подозреваю, что освоил я процентов 5 от общего функционала, однако и этот объем позволил мне работать радикально быстрее и выдавать в разы более качественный код.
Почему phpStorm?
IDE я выбирал как обычно, просто наугад. Конечно, поглядел конкурентов, но в целом, все IDE показались мне на одно лицо. Однако, у phpStorm есть несколько неоспоримых преимуществ:
1. Возможность получить OpenSource лицензию на год, бесплатно.
2. Хоть весь интерфейс и на английском, но компания российская и работают там русские люди, в основном.
3. phpStorm советуют сами авторы MODX. Раньше даже давали лицензию своим партнёрам.
Об этом выборе я не только не пожалел, но даже купил 2 нормальных лицензии на последней распрадаже, вместо OpenSource — чтобы поддержать разработчиков.
Настройка сервера
Для начала расскажу, как у меня налажено производство компонентов.
То есть, на сайте одни и теже файлы находятся в двух местах. MODX считает, что компоненты у него разложены в нужных директориях, а я могу синхронизировать эти директории с github и phpStorm.
На ноутбуке phpStorm, в котором лежат все нужные проекты, настроенный на синхронизацию с сервером. То есть, код одновременно лежит и на сервере и на ноуте. Это полезно, в случае непредвиденной атаки терористов на ваш хостинг.
Справа картинка, где стрелочками показано, что куда монтируется. Если захотите сделать также — вот команда:
sudo mount --bind /var/www/test/www/dateAgo/core/components/dateago/ /var/www/test/www/core/components/dateago/Еще раз — файлы у меня в одном экземпляре, в директорию MODX они как бы зеркалируются.Коммиты в репозиторий я присылаю из консоли сервера. Можно настроить это и на ноуте (и даже в IDE), но пока руки не дошли.
Настройка phpStorm
Итак, есть тестовый сайт с грамотно разложенными компонентами, которые нам нужно разрабатывать. Осталось настроить IDE для работы с ними.
- Новый проект из старых файлов.

- Имя и путь на локальном компе.

- Файлы лежат на сервере.

- Создаём новое подключение.

- Вводим данные для доступа.

- И выбираем корень проекта.

После создания проекта нужно зайти в Settings -> Deployment -> Options и установить Always в параметре загрузки обновлений на сервер. Теперь все изменения на локальном компе будут мгновенно синхронизироваться с удалённым, и вы сможете проверять результаты своей работы.
Настройки шрифтов редактора находятся в Editor -> Colors & Fonts -> Font. Можно скачать и установить разнообразные темы. Лично мне нравятся Twilight и Monokai с шрифтом Ubuntu Mono.
А теперь самое главное — нужно подключить файлы MODX, чтобы во время разработки IDE подсказывала нам, откуда что наследуется.
Для этого качаем свежую версию дистрибутива MODX, распаковываем на локальный компьютер и указываем:
Сюда можно подключать не только MODX, но и любые другие компоненты\библиотеки, которые будет использовать ваше расширение, например, pdoTools.
Теперь при наборе $modx-> IDE будет вам подсказывать методы класса MODX, с параметрами.
Как работать
Мы правильно настроили phpStorm и уже наслаждаемся подсказками, автодополнениями и прочими вкусняшками IDE.
Однако, чтобы автодополнение правильно работало, нужно указывать, где какие ипользуются классы. Делается это комментарием перед объявлением переменной.
/* @var modResource $resource */
if ($resource = $modx->getObject('modResource', 1)) {
print_r($resource->toArray());
}Пожалуйста, не ленитесь указывать объекты переменных, это сэкономит вам кучу времени, ведь IDE не только подскажет методы, но и проверит, что они должны возвращать и какие требуют параметры.Если вы пишите что-то не то, IDE проверяет и подчеркивает ошибки красным. Если вы объявляете и не используете переменную — она будет более бледной, чем другие. Если пытаетесь использовать переменную, которая не видна в текущем цикле\условии — будет warning и подчеркивание желтым.
При наведение на проблемные участки вылезают подсказки, где расписано, в чем ошибка. Особо непонятные можно и загуглить.
В общем, phpStorm на лету проверяет основные ошибки областей видимости, незакрытых переменных и прочие вещи, которые не нужно допускать в хорошем коде.
Также, если вам нужно перейти на объявление метода — кликните на него и нажмите Ctrl+B. Словами трудно объяснить, поэтому записал коротюсенькое видео.
Заключение
phpStorm — отличный инструмент, который экономит кучу времени и оберегает от множества ошибок. Совершенно не представляю, как я раньше без него работал?
Да, он требует определённой организации труда, но вы всё равно рано или поздно к ней придёте, если хотите делать интересные и полезные вещи для MODX Revolution.
А если нет — зачем вы это читаете?
Обновлено 24.06.13
Прислали ссылочку на канал phpStorm с обучающими видео. Всем рекомендую — www.youtube.com/playlist?list=PLQ176FUIyIUbfeFz-2EbDzwExRlD0Bc-w
Комментарии: 36
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Хотел как-то попросить тебя, чтобы ты написал статейку как организовываешь работу свою, а тут вот оно, да еще и шторм в придачу.
Про гитхаб не планируешь подобного чего-то?
Но у меня всё тупенько, через консоль, знаю только основные 5 команд. С другой стороны, мне этого вполне хватает.
Да и работы там особо нет.
Хотя мы вот в компании заливаем на bitbucket весь сайт, вместе с modx и статикой. Верстальщики работают в своей папке — html (там файлы верстки, постраничные макеты можно сказать), статику кладут в assets, затем сверху добавляется установка MODX. Накладные расходы есть (установленный MODX весит прилично), но зато имеем полный слепок системы на текущий момент. Планирую добавить еще хуки для автоматического дампа базы при push (и возможно апдейт при pull, но только из test в prod).
В общем, пилим что-то похожее на MODX Cloud для своих нужд и своими силами.
А вот когда проверю, делаю push уже с него.
Если есть желание, может напишешь как настроить phpStorm на работу с имеющимся репозиторием GitHub? Я подвешу твою заметку в этот раздел.
И еще по пакетам.
У меня есть папка ~/dev/ — там вся моя разработка. Есть папки с MODX (от dev начиная): modx/226, modx/225 и тд. А пакеты лежат в ~/dev/pkgs/ — пример ~/dev/pkgs/modx-semanager/
В modx добавляю с помощью ln -s (можно еще в namespace писать полный путь, но для коннекторов и некоторого javascript не помогает, проще символическую ссылку добавить).
Плюсы:
1. код пакета лежит в одном месте, куда без проблем заводим гит.
2. можно один пакет подключать к разным установкам modx с целью тестирования (правда, приходится менять строчку в config.core.php с путями к установке modx).
Была статья у меня на сайте, но он пока в стадии переезда на vps, поэтому ссылки не будет.
А код сниппета потом через админку вставляешь? Они то в базе хранятся.
В штормне куча быстрых клавиш, часто работаю в других редакторах тыкаю по инерции… А ещё я организую рабочие файлы не закладками как на видео, а с боку в колонку. И имею быстрый доступ ко всем файлам с которыми работаю в данный момент. Вижу какие изменены.
А вот фон в IDE у вас интересный, это не по умолчанию?
Ты полгода назад оставил записи для потомков. Сегодня, благодаря им, я вывел свой уровень программирования под MODx на новый уровень!
Сейчас сразу с первого захода пытаюсь настроить связь phpStorm с Xdebug для реализации точек останова и дебага.
manual.pohape.ru/xdebug/
Ну и при установке xDebug очень преображается var_dump() — его тоже приятно использовать.
А в дебаге PhpStorm разглядывать содержимое десятка переменных мне не понравилось. Плюс, нужно в браузер ставить плагин, кликать на него для активации.
Короче, пока не проникся, может, со временем и это придёт.
Не трогал настройки Inspectors. Только периодически обновлялся.
Кто-нибудь знает, как вернуть блудного инспектора к своим обязанностям?
У меня на OS X она в ~/Library/Applications Support/WebIde70
Заметил, что не анализируются только php файлы. Да и те делятся по какому-то непонятному принципу — в корне сайта ни один не анализируется, в core — какие-то работают, какие-то нет. Попробую у саппорта выяснить.
Их тоже можно удалить, это скрытая директория внутри проекта.
Выдает ошибку «Tag start is not closed». И все что после тега [[+disabled]] выделяется серым, а инспектор кода горит красным.
А хотелось бы, чтобы был зелененький квадратик.
Вот так.
мне на обычном хостинге не удалось сделать ссылки на директории. Техподдержка подсказала что через команду sudo у них команды не работают. и подсказала что работает команда
Что это проще даже, мол всегда сработает. И сработало.