До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

Главная | Все статьи | Код

Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами

Время чтения статьи ~16 минут 8
Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тес... главное изображение

Мы попросили опытных PHP-программистов рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.

Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет

Евгений Вольф

Евгений Вольф, W-Group


Какой редактор или IDE вы используете?

Использую PhpStorm (оплаченная коммерческая версия), так как это, пожалуй, единственная на сегодняшний день полноценная IDE, она всегда идёт в ногу со временем, в том числе поддерживает все основные фреймворки (Symfony, Laravel, etc.), имеет поддержку новых версий PHP по мере их выхода и так далее.

Раньше активно пользовался NetBeans в виду его бесплатности и хорошей поддержки нашей кодовой базы, но в какой-то момент NetBeans начал сильно отставать от выхода новых версий PHP, а потом Oracle и вовсе отказался от его развития, передав его в руки Apache Software foundation, которые, в свою очередь, разумеется начали его развивать в сторону поддержки Java в первую очередь. По итогу, на данный момент NetBeans в некоторой степени можно назвать лучшей бесплатной IDE, но она очень сильно проигрывает конкурентам как по функционалу, так и по поддержке современных версий PHP.

В плане редакторов, мне нравятся Atom, Visual studio code и, пожалуй, Notepad++. Обычно использую их для работы уровня «что-то поправить». С этой задачей они справляются отлично, выглядят приятно, относительно мало потребляют ресурсов, имеют подсветку синтаксиса, встроенную консоль и работу с Git'ом.

Что применяете для мониторинга производительности приложений?

Для мониторинга производительности приложений применяем top/htop. Это программы для линукса, которые показывают текущую нагрузку на сервер. Также применяем встроенные в Google Chrome средства для мониторинга производительности, скорости загрузки и так далее, и прочие инструменты, доступные в Google Chrome.

С помощью каких решений обеспечиваете безопасность приложений?

Безопасность обеспечиваем по старинке, выглядит это примерно так: мне известны все основные потенциальные дыры на уровне приложения и веб-сервера, а также способы атак. Код пишется таким образом, чтобы нивелировать все гипотетические последствия подобных атак.

Все известные мне приложения и сервисы по проверке безопасности находят уязвимости, которыми пользуются хакеры уровня «школьник», не более того. И особой ценности подобная информация для меня не представляет, так как все эти уязвимости стары как мир и общеизвестны. Возможно я старомоден, но я считаю, что руки + голова + firewall решают 99 % проблем с безопасностью приложений и серверов.

Какие инструменты отладки используете?

Для отладки PHP используем Xdebug. Не уверен, что у него есть альтернативы заслуживающие особого внимания. Для отладки Laravel-проектов также используем barryvdh/laravel-debugbar (php debugbar), в Symfony же была собственная весьма неплохая отладочная панель.

Что используете для тестирования?

Как базовый (основной/первичный) инструмент используем PHPUnit, а далее в зависимости от сложности и требований конкретного проекта. Иногда тесты не пишем вообще.

С каким веб-фреймворком работаете?

Работали мы с очень многими фреймворками, начиная от таких «мамонтов», как CodeIgniter, Kohana, CakePHP и так далее, включая экзотику, например, Phalcon. Сейчас остановили свой выбор исключительно на Laravel и не перестаём посматривать в сторону Symfony. Пока мы ей не смогли найти достойного применения ввиду того, что она нещадно тормозит, кто бы что не говорил, но производительности ей сильно не хватает и это факт.

Достаточно долго (вынужденно) пришлось поработать с Yii 1.x и 2.х. От его использования мы полностью отказались, так как проект находится в стадии предсмертной агонии. За последние 5+ лет, по моим наблюдениям, в Yii2 было исправлено около половины из 400+ заявленных багов. На этом собственно и всё. Никакого нового функционала не появилось, возможности современных (вышедших далеко не вчера) версий PHP данный фреймворк не использует, новых версий особо не выходит, проект если и не совсем мёртв, то слишком долго топчется на одном месте, ввиду чего по нашему мнению он мало ликвиден и используется в основном теми, кто не имеет достаточной экспертизы в Laravel и/или Symfony.

Какие серверы и базы данных применяете?

Базы данных... Ну, в первую очередь, это конечно же MySQL, куда же без него, но без фанатизма.

Если проект публичный (OpenSource) или просто мелкий/простой, MySQL подходит идеально, его все знают, а некоторые даже любят. Но при серьёзных проектах и нагрузках MySQL не лишен ряда существенных недостатков. Начиная с отсутствия поддержки современных стандартов SQL до того, что при больших объёмах база может просто посыпаться.

Также у MySQL есть ряд технических коллизий, в частности в MySQL практически отсутствует такой механизм, как планировщик запросов. Он не может использовать более одного индекса на запрос, отсутствует многопоточность запросов и MVCC, есть ограничения на размер одной записи индекса, набор индексов довольно скудный, функционал сильно отстаёт от «старших собратьев».

Например, оконные функции появились в MySQL только с версии 8.0, поддержка JSON тоже появилась относительно недавно (с версии 5.7 кажется), но JSON-поля в MySQL текстовые и не индексируются. А также масса других объективных недостатков данной БД. Часть из которых подтверждается наличием множества форков данный БД, наиболее известные из которых — MariaDB, Percona. Что в принципе ожидаемо, так как после покупки данного проекта Oracle вполне логично предположить, что Oracle не даст проекту сильно развиваться и составить конкуренцию их основной (платной) БД. По этому, для серьёзных проектов мы используем PostgreSQL.

Какие инструменты виртуализации предпочитаете?

Для виртуализации активно используем Docker, так как он позволяет решать проблему различия сред (то есть когда у одного работает, а другого нет), а также он позволяет упаковывать приложения, передавая их как единой целое (приложение + все прикладные его части + настройки ОС, включая её саму и так далее), что в целом довольно удобно.

Конечно, Docker — это далеко не серебряная пуля, и у него хватает своих «тараканов», но в целом это неплохое решение для ряда задач (ввиду того, что ничего лучше пока не придумали).

Очень жаль, что под ОС Windows Docker работает весьма посредственно, но для себя мы решили эту проблему, просто отказавшись от Windows в пользу Linux. Иногда используем VirtualBox, LXC/LXD. Если бы LXC/LXD был более переносим, я имею в виду простоту переноса и отсутствие лишних телодвижений, между разными ОС или хотя бы внутри Linux, цены бы ему не было, так как в отличии от Docker LXC/LXD эмулирует полноценную ОС, включая систему инициализации, что в ряде случаев было бы куда лучшим решением, чем куча отдельных Docker-контейнеров для одного приложения. Другие системы виртуализации нам хорошо знакомы, но ввиду отсутствия какой-либо необходимости в них в нашей работе я о них просто не упоминаю.

Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?

В первую очередь, я думаю, это ОС Linux, позволяющая разрабатывать приложения в родной для них среде со всеми вытекающими. Хорошая IDE, умение пользоваться инструментами ОС Linux (в частности иногда очень сильно выручает редактор VI[M], такие инструменты как find, grep, ssh, tail и многие другие), пара веб-серверов (Nginx, Apache — да, вы не ослышались, иногда мы используем Apache по вполне конкретным причинам), свежая версия PHP, ну и общее понимание принимаемых решений, то есть осознанный выбор на уровне полного понимания последствий, а не на уровне интуиции, — вот, пожалуй, самые важные инструменты для веб-разработчика.

И да, в 99% случаев мы не используем CMS вообще.

Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии

Борис Коробков

Борис Коробков


Какой редактор или IDE вы используете?

Более 10 лет назад — NetBeans, других альтернатив тогда не было. Потом PhpStorm — он удобнее, чем NetBeans. Работодатель оплачивал лицензию. Сейчас Visual Studio Code — такой же удобный, но бесплатный.

Что применяете для мониторинга производительности приложений?

При локальной отладке — breakpoint средствами фреймворка. На продакшене — Nagios (так исторически сложилось), slow query log, iostat и так далее.

С помощью каких решений обеспечиваете безопасность приложений?

Ввод, вывод, БД — средствами фреймворка: Request, Response, ORM. Статические анализаторы кода: Php Inspections, CodeSniffer. Сканеры: Nmap.

Какие инструменты отладки используете?

Xdebug.

Что используете для тестирования?

PHPUnit, Selenium.

С каким веб-фреймворком работаете?

Есть опыт работы со многими фреймворками, включая самописные. Если делать простой сайт для себя just for fun, вероятно, выберу Yii2. Если выбирать фреймворк для серьезного проекта, надо учесть много факторов.

Какие серверы и базы данных применяете?

На новых серверах ставлю CentOS, на старых работаю с тем, что есть. Из БД предпочитаю PostgreSQL, иногда использую MySQL, по требованию заказчика или по обстоятельствам — SQLite, Redis, Mongo и прочие.

Какие инструменты виртуализации предпочитаете?

Docker. С его помощью запускаю unit-тесты с разными БД (разных версии PostgreSQL, MySQL), разными веб-серверами (Nginx, Apache2), разными версиями PHP.

Запускаю Selenium-тесты на разных браузерах (Chrome, Firefox).

Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?

Для любых разработчиков: git + code review = github или gitlab.

Алексей Уколов, технический директор в компании «Айтигро», занимается веб-разработкой более 10 лет

Алексей Уколов

Алексей Уколов, компания «Айтигро»


Какой редактор или IDE вы используете?

Начинал с NetBeans, но довольно быстро перешёл на PhpStorm, и последние семь лет использую его. Почему перешёл, уже не помню точно, кажется, интерфейс казался неудобным. Свою стоимость PhpStorm оправдывает полностью — удобный интерфейс и умные подсказки значительно облегчают работу.

Полезно смотреть или читать туториалы, чтобы знать о каких-то неочевидных функциях. Для новичков будет полезно включить настройку Show tips on startup, при помощи этого окна я тоже многие функции узнал.

Простые редакторы тоже использую, но нечасто — обычно это nano или mceditor на серверах.

Что применяете для мониторинга производительности приложений?

У нас нет какого-то прямо серьёзного хайлоада и распределённых систем, поэтому хватает данных «Яндекс.Метрики», чтобы увидеть есть ли какие-то проблемы. Наши админы настраивают Zabbix, и он предупреждает о «железных» проблемах. Бизнес-метрики собираем кастомным решением под каждый проект, потому что требования у всех свои.

Во время разработки мы всегда профилируем приложение при помощи XHProf и создания какого-то похожего на правду объёма данных, поэтому многие проблемы до продакшена вообще не доезжают. Если всё-таки случаются тормоза, то запускаем XHProf уже на сервере для какого-то среза пользователей (об этом нужно думать заранее и разворачивать инфраструктуру, когда проблем нет, потому что поднимать XHProf на «горящем» проекте — удовольствие сомнительное). Если и это не помогает, подключаем NewRelic или okmeter.

С помощью каких решений обеспечиваете безопасность приложений?

Каких-то специальных инструментов не используем, просто помним о лучших практиках кода и проводим ревью. Современные фреймворки, в принципе, многое из этой области берут на себя.

Какие инструменты отладки используете?

Практика показывает, что самый лучший инструмент — это Xdebug. Но часто запускать его лень, и проблема решается дампом каких-то данных на страницу или в консоль. Периодически я ловлю себя на том, что вывожу какие-то данные, копаюсь в них, а потом запускаю Xdebug и сразу нахожу проблему. Приучить себя сложно, но я стараюсь.

Ещё на каждый проект ставим Laravel Debug Bar, но я обычно её сразу скрываю и практически никогда не пользуюсь. Хотя штука это довольно полезная — например, показывает, что какие-то запросы к БД дублируются, значит где-то есть проблема N+1.

Что используете для тестирования?

Для тестов используем PHPUnit и Mockery, плюс встроенные в Laravel тест-кейсы. Этого хватает для решения всех задач. У Laravel ещё есть браузерное тестирование через Dusk, но в нём пока большой необходимости не увидели.

Несколько лет назад пытались подружить Behat и Битрикс — безуспешно. Сама идея Behat мне нравится, но когда тесты придумывают и пишут сами программисты, использование «литературного» описания кажется лишней прослойкой.

С каким веб-фреймворком работаете?

Только с Laravel. Yii и Zend мне персонально не очень нравятся, когда я выбирал фреймворк, они выглядели устаревшими. Возможно, сейчас они догнали остальных по использованию каких-то стандартов индустрии (PSR и тому подобное), но переходить уже не вижу смысла — все мои задачи Laravel закрывает.

Symfony выглядит привлекательно, и какие-то небольшие вещи я на ней писал, но у Laravel ниже порог входа, поэтому проще найти разработчиков.

Какие серверы и базы данных применяете?

Не очень понятно что подразумевается под серверами. Если железо, то не знаю — админы что-то собирают :) ОС используем разные, в зависимости от требований клиента. Кому-то важны разные сертификации надзорных органов — тогда берём какой-то не самый свежий Debian. Кому-то важно, чтобы релиз был LTS. Чаще всего используем Debian, CentOS и Ubuntu.

СУБД, опять же, выбираем под проект. Обычно это последняя версия MySQL, но иногда клиенту нужна «экзотика». Приходилось писать и под PostgreSQL, и под MSSQL, и даже под SQLite.

Какие инструменты виртуализации предпочитаете?

Сейчас на всех этапах разработки используем Docker — он стоит на локальных машинах разработчиков, на стейджинг-серверах и на продакшене.

На мой взгляд, глубоко погружаться в эту тему PHP-разработчику не нужно, у нас хватает своих забот в предметной области, так что умения написать несложный Docker-файл, запустить-остановить контейнер и собрать несколько контейнеров в приложение при помощи docker-compose должно быть достаточно. Это, конечно, при условии, что есть доступ к компетентным админам и девопсам.

Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?

Очень рекомендую использовать различные анализаторы кода, они реально ловят ошибки и помогают писать чище. Вот что я сразу ставлю на новый проект:

  • phpstan
  • phpcpd
  • php_codesniffer
  • php-cs-fixer
  • churn

Максим Фёдоров, PHP-программист, «Яндекс.Еда»

Максим Фёдоров

Максим Фёдоров


Какой редактор или IDE вы используете?

PhpStorm.

Что применяете для мониторинга производительности приложений?

Мало приходилось, немного через Blackfire от Symfony производительность мерил, сейчас будем с танком работать. Это разные вещи, но так или иначе этот вопрос решал с помощью этих инструментов в рамках своей работы.

С помощью каких решений обеспечиваете безопасность приложений?

Только через ручное/обычное автоматическое тестирование без специальных решений.

Какие инструменты отладки используете?

Xdebug.

Что используете для тестирования?

PHPUnit, Codeception + selenium, paratest.

С каким веб-фреймворком работаете?

Symfony (3.4 на работе, 4 для своих проектов).

Какие серверы и базы данных применяете?

MySQL, rabbitmq.

Какие инструменты виртуализации предпочитаете?

Предпочитаю вагрант, но работаю с докером :)

Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?

PhpStan, php-CS-fixer обязательным набором идут, чего-то экзотического не особо использую.

Антон Морев, CTO в Wormsoft

Антон Морев

Антон Морев

Какой редактор или IDE вы используете?

PhpStorm (сначала были PSDPad, Sublime Text).

Что применяете для мониторинга производительности приложений?

AB, Siege

С помощью каких решений обеспечиваете безопасность приложений?

Не используем специальные решения.

Какие инструменты отладки используете?

Xdebug.

Что используете для тестирования?

Codeception.

С каким веб-фреймворком работаете?

Yii2, Laravel.

Какие серверы и базы данных применяете?

Mysql, PostgreSQL, MongoDB.

Какие инструменты виртуализации предпочитаете?

Docker.

Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?

Postman, Altair.

Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры «ВКонтакте»

Искандер Шарипов

Искандер Шарипов


Какой редактор или IDE вы используете?

PhpStorm.

Какие инструменты отладки используете?

Статический анализ, кодовое ревью. Ещё в kPHP к коду есть требование в указании большинства типов, поэтому PHP у нас во многом более строгий, из-за чего ошибки типов встречаются реже. Остальные ошибки пытаемся находить статическим анализом или во время тестирования.

Что используете для тестирования?

PHPUnit.

С каким веб-фреймворком работаете?

Свой собственный. На прошлой работе тоже были свои велосипеды, но ближе всего был Yii2.

Какие серверы и базы данных применяете?

В ВК большая часть БД написанные нашей же командой. Но ещё используются MySQL и ClickHouse. Есть сервера под Nginx, но бывают и отдельно стоящие сервера на каком-нибудь Go (но перед ними тоже могут быть балансировщики).

Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?

Phpgrep и NoVerify.

Илья Логинов, Senior PHP developer

Илья Логинов

Илья Логинов


Какой редактор или IDE вы используете?

PhpStorm, до этого был NetBeans, а до него Notepad++ с плагинами.

Что применяете для мониторинга производительности приложений?

Обычно Zabbix с доработками, изредка какой нибудь внутренний продукт компании

С помощью каких решений обеспечиваете безопасность приложений?

Кастомные решения в виде bash скриптов, настройки окружения, логов и прочего.

Какие инструменты отладки используете?

Xdebug.

Что используете для тестирования?

PHPUnit (+ Code Coverage).

С каким веб-фреймворком работаете?

Сейчас с Laravel, до этого были Zend, Kohana, Codeigniter.

Какие серверы и базы данных применяете?

Тут все зависит от требований к проекту, для некоторых подходит VPS с SqLite, другим продукты AWS требуются. Но в большинстве случаев это VDS и MySQL(MariaDB) или PostgreSQL.

Какие инструменты виртуализации предпочитаете?

Уже давно не работал с системами виртуализации, сейчас только контейнеризация в виде Docker с Kubernetes.

Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?

Vim.


Пожалуйста, напишите в комментариях, какими инструментами в повседневной работе с PHP-кодом пользуетесь вы.

Аватар пользователя Дмитрий Дементий
Дмитрий Дементий 17 сентября 2019
8
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 28 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 28 ноября
профессия
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 28 ноября
профессия
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 28 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 28 ноября