Робота з Symfony2 в PhpStorm
PhpStorm відмінна IDE. Але навіть з відмінним інструментом робота перетворюється в це , Якщо неправильно ним користуватися.
Це стосується і роботи з Symfony2 проектами. PhpStorm забезпечує непогану підтримку цього фреймворка з коробки, але потрібно більше золота. Що ж ми отримаємо в результаті:
- сервіси
- Автокомпліт по іменах сервісів в методі get () контейнера, в yml, xml і взагалі скрізь, де ви будете вказувати сервіси.
- В тому числі авто-визначення класу об'єкта сервісу з усіма наслідками (підказки по методам та ін.)
- Перехід до класу сервісу з будь-якого його виклику по Ctrl + клік.
- Індексація сервісів "на льоту" без необхідності перекомпіляції контейнера. Не завжди все індексує.
- Роутінг
- Автокомпліт Рауса всюди де тільки можна.
- Перехід до екшену по Ctrl + клік на ім'я роута.
- Фолдінг Рауса в реальний URL.
- Автокомпліт параметрів роута.
- Перехід в один клік від екшену контролера до шаблону. Або, якщо шаблону немає, можливість його створити. На полях зліва від імені екшену.
- форми
- Автокомпліт параметрів для налаштування форм (які задаються звичайним масивом).
- Автокомпліт типів полів. У тому числі в самописних анотаціях, наприклад, до сутностей.
- Doctrine
- Автокомпліт в анотаціях сутностей.
- Автокомпліт назв сутностей.
- Визначення класів репозиторіїв з подальшим автокомплітом методів.
- Підтримка QueryBuilder і Query. Мені не особливо сподобалося, багато методи не бачить.
- Twig
- Підказки по будь-яким Twig функцій, модифікаторам і змінним (в тому числі глобальним), в тому числі з ваших власних розширень.
- Можливість перейти до визначення Twig-финкции, модифікатора, змінної по Ctrl + клік.
- Автокомпліт імен успадкованих через {% extends%} блоків.
- Автокомпліт і фолдінг імен шаблонів.
- Підказки по translate'ам, їх фолдінг в текст. Перехід по Ctrl + клік до визначення.
- Підказки по Ассет, їх аналіз на валідність. У тому числі Ассет з конфігов через AssetManager.
- Підказки по макросам.
- Нові вкладки IDE
- Повна структура проекту з розбивкою на контролери, шаблони та інше. Вкладка Framework.
- Швидкий пошук по ресурсах Symfony2. Вкладка Symfony2.
- анотації
- Автокомпліт будь-яких сторонніх анотацій і їх параметрів.
- Зручна інтеграція з PHPUnit і запуск тестів прямо в IDE
- Напевно ще щось є, а я просто забув.
установка
Нам знадобляться всього три плагіна:
Тому перш за все потрібно все це встановити. Відкриваємо налаштування (Ctrl + Alt + S), розділ Plugins. І тиснемо середню кнопку під списком: Browse repositories ... У вікні знаходимо вищевказані плагіни і встановлюємо їх в такому ж порядку, як вище, тому що вони залежні. Тепер тиснемо OK і перезапускаємо PhpStorm. Тепер в списку плагінів у вас має бути приблизно таке:
Налаштування проекту
Далі нам знадобиться проект на Symfony2. Створюємо новий проект з готових файлів, або відкриваємо свій, а можна створити проект через FTP . Загалом, потрібен проект.
Швидше за все, PhpStorm зараз сам визначить, що проект на Symfony2 і запропонує включити інтеграцію. Можна сміливо з ним погоджуватися, однак автоматично налаштується далеко не всі.
Заходимо знову в налаштування (Ctrl + Alt + S), в розділ PHP -> Framework Integration. Ставимо галочку Enable framework integration і вибираємо в списку Symfony2. Далі вручну проставляем ролі папок проекту. Щоб вказати папці роль потрібно мишкою клацнути на другу колонку, з'явиться список, що випадає. Якщо ви працюєте з Symfony2, то інтуїтивно здогадаєтеся що куди, але про всяк випадок наводжу скріншот:
Тепер йдемо в розділ налаштувань Symfony2 Plugin. Ставимо галочку Enable plugin for this project. І перезапускаємо PhpStorm. На цьому настройка проекту закінчена, пробуйте.
Звичайно всі ці плагіни мають ще купу налаштувань, в яких копайтеся вже самостійно. У 99% випадків міняти там нічого не доведеться.
Увага. Для коректної роботи половини зазначених фішок потрібна наявність деяких файлів з кеша:
- Потрібен файл app / cache / dev / appDevUrlGenerator.php, інакше будуть проблеми з підказками по Рауса.
- Потрібна папка app / cache / dev / translations, інакше доданок не буде видить translation'и.
- Потрібен файл app / cache / dev / appDevDebugProjectContainer.xml, інакше не буде подскозок по сервісах або вони будуть кульгати.
Загалом, в ідеалі потрібно працювати на локальному сервері. Але можна прекратно обходитися FTP, як це роблю я, просто скачавши потрібні файли з кеша.
Так само раджу прочитати статтю про продуктивній роботі в PhpStorm , Тому що про багатьох функціях просто так не здогадатися.
Update від 07.10.2015
У більш нових версіях PHP Storm вкладка Framework Intergration може бути відсутнім. Якщо у вас саме так, то слід вручну встановити плагін Framework MVC Structure Support зі сховищ і вкладка з'явиться. Framework Intergration з'явиться в розділі Other Settings.