Мы попросили опытных PHP-программистов рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.
Содержание
- Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет
- Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии
- Алексей Уколов, технический директор в компании «Айтигро», занимается веб-разработкой более 10 лет
- Максим Фёдоров, PHP-программист, «Яндекс.Еда»
- Антон Морев, CTO в Wormsoft
- Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры «ВКонтакте»
- Илья Логинов, Senior PHP developer
Евгений Вольф, 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-разработчика, о которых хотите сказать отдельно?
Очень рекомендую использовать различные анализаторы кода, они реально ловят ошибки и помогают писать чище. Вот что я сразу ставлю на новый проект:
Максим Фёдоров, 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-кодом пользуетесь вы.
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="ru" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<link href="https://mc.yandex.ru" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26 17:29:30 UTC","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="usHi6COCNovKLI_xudgADm0oWuOfMnGYIqth6iCLkLtVECnf0fyb63xvq2m11_B5rSF3SZcFjzqfS_u-cox31Q";gon.locale="ru";gon.language="ru";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLSeibfGq-KvWQ2Fyru-zkFFRVTLBuzXAHAoEyN1p49FtDmNoNA";
//]]>
</script>
<meta charset="utf-8">
<title>Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами</title>
<meta name="description" content="Мы попросили опытных PHP-программисты рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять,">
<link rel="canonical" href="https://ru.hexlet.io/blog/posts/chto-ispolzuyut-php-programmisty-kakie-ide-i-redaktory-sredstva-otladki-testirovaniya-i-virtualizatsii-vostrebovany-professionalami">
<meta property="og:title" content="Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами">
<meta property="og:description" content="Мы попросили опытных PHP-программисты рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.">
<meta property="og:image" content="https://ru.hexlet.io/vite/assets/blog_post-7eTyeLLt.webp">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="5giCigj-9M6miMVlCWrrwQnHFnXgEFGvKG5U7KvtxOAJ2Um9-oBZrhDL4f0FZRu2yc473-gnrw2Vjs64-eojjg" />
<script src="/vite/assets/inertia-INZxX8jp.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-BJ4cLWpC.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-nkZBEvfU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-DrlRQ-1D.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-6pOtQ3OW.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DL2bpZA-.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/extends-C-EagtpE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/inheritsLoose-BBd-DCVI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/objectWithoutPropertiesLoose-DRHXDhjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DAqKOkZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Button-CGPUux8l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/CloseButton-D1euiPao.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Group-BX48WcuU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Loader-BQEY8g6v.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-Cy3HByv7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/OptionalPortal-1Hza5P2w.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Stack-CtjJzfw4.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-Ck64llAy.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/DirectionProvider-Dc9zdUke.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/events-DJQOhap0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-reduced-motion-D2owz4wa.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-disclosure-zKtK5W1r.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-hotkeys-Cnc_Rwkb.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/random-id-DOQyszCZ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-C_MrNx_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BqhCP46M.js" />
<script src="/vite/assets/application-Df9RExpe.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-VMNbxKGl.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-C3aM9r1M.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-D1-O8zkX.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-C8HjmMaq.css" media="screen" />
<script>
window.ym = function(){(ym.a=ym.a||[]).push(arguments)};
window.addEventListener('load', function() {
setTimeout(function() {
ym.l = 1*new Date();
ym(window.gon.ym_counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
// Загружаем скрипт
var k = document.createElement('script');
k.async = 1;
k.src = 'https://mc.yandex.ru/metrika/tag.js';
document.head.appendChild(k);
ym(window.gon.ym_counter, 'getClientID', function(clientID) {
window.ymClientId = clientID;
});
}, 1500);
});
</script>
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<noscript>
<div>
<img alt="" src="https://mc.yandex.ru/watch/25559621" style="position:absolute; left:-9999px;">
</div>
</noscript>
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Логотип Хекслета" height="24" src="https://ru.hexlet.io/vite/assets/logo_ru_light-BpiEA1LT.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Меню" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
Все курсы
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Все что есть</div>
<div class="text-muted">117</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные категории</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">Курсы по DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_data_analytics">Курсы по аналитике данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_programming">Курсы по программированию
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Курсы по тестированию
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные курсы</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/go">Go-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/java">Java-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/python">Python-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/qa-auto-engineer-java">Автоматизатор тестирования на Java
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/data-analytics">Аналитик данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Фронтенд-разработчик
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
О Хекслете
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">О нас
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Блог
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button">Результаты (Исследование)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button">Хекслет Карьера
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Отзывы студентов
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button">Поддержка (В ТГ)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button">Реферальная программа
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button">Подарочные сертификаты
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button">Вакансии
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button">Компаниям
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button">Колледж
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button">Частная школа
</span></li>
</ul>
</li>
<li><a class="nav-link" href="/subscription/new">Подписка</a></li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Переключить тему" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Регистрация</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://ru.hexlet.io/session/new" role="button"><span>Вход</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<link rel="preload" as="image" href="/vite/assets/blog_post-7eTyeLLt.webp"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzk5MiwicHVyIjoiYmxvYl9pZCJ9fQ==--e9d0f30948ea766a7e6bc3e3d56c192344d45fb8/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-cuate%20(1).png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e5793a1818ff43d73135cc7ed88c1998d7650470/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Developer%20activity-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzkzNSwicHVyIjoiYmxvYl9pZCJ9fQ==--06c469e64c9b6c8429a6a01edd20041dae30ce13/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20code%20testing-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcyMSwicHVyIjoiYmxvYl9pZCJ9fQ==--b4d9b4d245e88f43c7f861ac11e675846937c317/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programmer-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2OSwicHVyIjoiYmxvYl9pZCJ9fQ==--cbbaa606be07bca305bd21d9919235989a1ed289/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Code%20typing-amico.png"/><link rel="preload" as="image" href="/vite/assets/development-BVihs_d5.png"/><div id="app" data-page="{"component":"web/blog/posts/show","props":{"errors":{},"locale":"ru","language":"ru","httpsHost":"https://ru.hexlet.io","host":"ru.hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26T17:29:29.976Z","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":"88d071f1d3384eb4bd1deb37910235c7","formAuthToken":"1om-Yc09N5rFKY5utLGLqg_pllCXMtdi32PufQ7e0FM5WHVWP0Oa-nNqqva4vnvdz-C7-p8FKcBig3QpXNk3PQ","post":{"model_name":"BlogPost","category":{"id":4,"name":"Код","slug":"code","state":"published","created_at":"2016-08-23T13:33:44.258Z"},"creator":{"public_name":"Дмитрий Дементий","id":174372,"is_tutor":false},"tags":[{"id":1038,"slug":"php","name":"PHP"},{"id":316,"slug":"testirovanie","name":"Тестирование"}],"id":468,"title":"Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами","slug":"chto-ispolzuyut-php-programmisty-kakie-ide-i-redaktory-sredstva-otladki-testirovaniya-i-virtualizatsii-vostrebovany-professionalami","state":"published","summary":"Мы попросили опытных PHP-программисты рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.","votes_count":9,"created_at":"2019-09-16T16:39:54.976Z","published_at":"2019-09-17T07:17:48.922Z","body":"Мы попросили опытных PHP-программистов рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.\n\n## Содержание\n\n## Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет\n\n\n\n_[Евгений Вольф](https://vk.com/wolfalone)_, [W-Group](https://2vgroup.ru/)\n___\n\n_Какой редактор или IDE вы используете?_\n\nИспользую PhpStorm (оплаченная коммерческая версия), так как это, пожалуй, единственная на сегодняшний день полноценная IDE, она всегда идёт в ногу со временем, в том числе поддерживает все основные фреймворки (Symfony, Laravel, etc.), имеет поддержку новых версий PHP по мере их выхода и так далее. \n\nРаньше активно пользовался NetBeans в виду его бесплатности и хорошей поддержки нашей кодовой базы, но в какой-то момент NetBeans начал сильно отставать от выхода новых версий PHP, а потом Oracle и вовсе отказался от его развития, передав его в руки Apache Software foundation, которые, в свою очередь, разумеется начали его развивать в сторону поддержки Java в первую очередь. По итогу, на данный момент NetBeans в некоторой степени можно назвать лучшей бесплатной IDE, но она очень сильно проигрывает конкурентам как по функционалу, так и по поддержке современных версий PHP.\n\nВ плане редакторов, мне нравятся Atom, Visual studio code и, пожалуй, Notepad++. Обычно использую их для работы уровня «что-то поправить». С этой задачей они справляются отлично, выглядят приятно, относительно мало потребляют ресурсов, имеют подсветку синтаксиса, встроенную консоль и работу с Git'ом.\n\n_Что применяете для мониторинга производительности приложений?_\n\nДля мониторинга производительности приложений применяем top/htop. Это программы для линукса, которые показывают текущую нагрузку на сервер. Также применяем встроенные в Google Chrome средства для мониторинга производительности, скорости загрузки и так далее, и прочие инструменты, доступные в Google Chrome. \n\n_С помощью каких решений обеспечиваете безопасность приложений?_\n\nБезопасность обеспечиваем по старинке, выглядит это примерно так: мне известны все основные потенциальные дыры на уровне приложения и веб-сервера, а также способы атак. Код пишется таким образом, чтобы нивелировать все гипотетические последствия подобных атак. \n\n::programs\n\nВсе известные мне приложения и сервисы по проверке безопасности находят уязвимости, которыми пользуются хакеры уровня «школьник», не более того. И особой ценности подобная информация для меня не представляет, так как все эти уязвимости стары как мир и общеизвестны. Возможно я старомоден, но я считаю, что руки + голова + firewall решают 99 % проблем с безопасностью приложений и серверов.\n\n_Какие инструменты отладки используете?_\n\nДля отладки PHP используем Xdebug. Не уверен, что у него есть альтернативы заслуживающие особого внимания. Для отладки Laravel-проектов также используем barryvdh/laravel-debugbar (php debugbar), в Symfony же была собственная весьма неплохая отладочная панель.\n\n_Что используете для тестирования?_\n\nКак базовый (основной/первичный) инструмент используем PHPUnit, а далее в зависимости от сложности и требований конкретного проекта. Иногда тесты не пишем вообще.\n\n_С каким веб-фреймворком работаете?_\n\nРаботали мы с очень многими фреймворками, начиная от таких «мамонтов», как CodeIgniter, Kohana, CakePHP и так далее, включая экзотику, например, Phalcon. Сейчас остановили свой выбор исключительно на Laravel и не перестаём посматривать [в сторону Symfony](https://ru.hexlet.io/blog/posts/kakoy-php-freymvork-vybrat-sravnivaem-symphony-laravel-i-yii2). Пока мы ей не смогли найти достойного применения ввиду того, что она нещадно тормозит, кто бы что не говорил, но производительности ей сильно не хватает и это факт. \n\nДостаточно долго (вынужденно) пришлось поработать с Yii 1.x и 2.х. От его использования мы полностью отказались, так как проект находится в стадии предсмертной агонии. За последние 5+ лет, по моим наблюдениям, в Yii2 было исправлено около половины из 400+ заявленных багов. На этом собственно и всё. Никакого нового функционала не появилось, возможности современных (вышедших далеко не вчера) версий PHP данный фреймворк не использует, новых версий особо не выходит, проект если и не совсем мёртв, то слишком долго топчется на одном месте, ввиду чего по нашему мнению он мало ликвиден и используется в основном теми, кто не имеет достаточной экспертизы в Laravel и/или Symfony.\n\n_Какие серверы и базы данных применяете?_ \n\nБазы данных... Ну, в первую очередь, это конечно же MySQL, куда же без него, но без фанатизма. \n\nЕсли проект публичный (OpenSource) или просто мелкий/простой, MySQL подходит идеально, его все знают, а некоторые даже любят. Но при серьёзных проектах и нагрузках MySQL не лишен ряда существенных недостатков. Начиная с отсутствия поддержки современных стандартов SQL до того, что при больших объёмах база может просто посыпаться. \n\nТакже у MySQL есть ряд технических коллизий, в частности в MySQL практически отсутствует такой механизм, как планировщик запросов. Он не может использовать более одного индекса на запрос, отсутствует многопоточность запросов и MVCC, есть ограничения на размер одной записи индекса, набор индексов довольно скудный, функционал сильно отстаёт от «старших собратьев». \n\nНапример, оконные функции появились в MySQL только с версии 8.0, поддержка JSON тоже появилась относительно недавно (с версии 5.7 кажется), но JSON-поля в MySQL текстовые и не индексируются. А также масса других объективных недостатков данной БД. Часть из которых подтверждается наличием множества форков данный БД, наиболее известные из которых — MariaDB, Percona. Что в принципе ожидаемо, так как после покупки данного проекта Oracle вполне логично предположить, что Oracle не даст проекту сильно развиваться и составить конкуренцию их основной (платной) БД. По этому, для серьёзных проектов мы используем PostgreSQL.\n\n_Какие инструменты виртуализации предпочитаете?_\n\nДля виртуализации активно используем Docker, так как он позволяет решать проблему различия сред (то есть когда у одного работает, а другого нет), а также он позволяет упаковывать приложения, передавая их как единой целое (приложение + все прикладные его части + настройки ОС, включая её саму и так далее), что в целом довольно удобно. \n\nКонечно, Docker — это далеко не серебряная пуля, и у него хватает своих «тараканов», но в целом это неплохое решение для ряда задач (ввиду того, что ничего лучше пока не придумали). \n\nОчень жаль, что под ОС Windows Docker работает весьма посредственно, но для себя мы решили эту проблему, просто отказавшись от Windows в пользу Linux. Иногда используем VirtualBox, LXC/LXD. Если бы LXC/LXD был более переносим, я имею в виду простоту переноса и отсутствие лишних телодвижений, между разными ОС или хотя бы внутри Linux, цены бы ему не было, так как в отличии от Docker LXC/LXD эмулирует полноценную ОС, включая систему инициализации, что в ряде случаев было бы куда лучшим решением, чем куча отдельных Docker-контейнеров для одного приложения. Другие системы виртуализации нам хорошо знакомы, но ввиду отсутствия какой-либо необходимости в них в нашей работе я о них просто не упоминаю.\n\n_Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?_ \n\nВ первую очередь, я думаю, это ОС Linux, позволяющая разрабатывать приложения в родной для них среде со всеми вытекающими. Хорошая IDE, умение пользоваться инструментами ОС Linux (в частности иногда очень сильно выручает редактор VI[M], такие инструменты как find, grep, ssh, tail и многие другие), пара веб-серверов (Nginx, Apache — да, вы не ослышались, иногда мы используем Apache по вполне конкретным причинам), свежая версия PHP, ну и общее понимание принимаемых решений, то есть осознанный выбор на уровне полного понимания последствий, а не на уровне интуиции, — вот, пожалуй, самые важные инструменты для веб-разработчика.\n\nИ да, в 99% случаев мы не используем CMS вообще.\n\n\n## Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии\n\n\n\n_[Борис Коробков](https://www.youtube.com/channel/UCQqEK815PqZiQnhIthjqxaA)_\n___\n\n_Какой редактор или IDE вы используете?_\n\nБолее 10 лет назад — NetBeans, других альтернатив тогда не было. Потом PhpStorm — он удобнее, чем NetBeans. Работодатель оплачивал лицензию. Сейчас Visual Studio Code — такой же удобный, но бесплатный.\n\n_Что применяете для мониторинга производительности приложений?_\n\nПри локальной отладке — breakpoint средствами фреймворка. На продакшене — Nagios (так исторически сложилось), slow query log, iostat и так далее. \n\n_С помощью каких решений обеспечиваете безопасность приложений?_\n\nВвод, вывод, БД — средствами фреймворка: Request, Response, ORM. Статические анализаторы кода: Php Inspections, CodeSniffer. Сканеры: Nmap.\n\n_Какие инструменты отладки используете?_\n\nXdebug.\n\n_Что используете для тестирования?_\n\nPHPUnit, Selenium. \n\n_С каким веб-фреймворком работаете?_\n\nЕсть опыт работы со многими фреймворками, включая самописные. Если делать простой сайт для себя just for fun, вероятно, выберу Yii2. Если выбирать фреймворк для серьезного проекта, надо учесть много факторов.\n\n_Какие серверы и базы данных применяете?_ \n\nНа новых серверах ставлю CentOS, на старых работаю с тем, что есть. Из БД предпочитаю PostgreSQL, иногда использую MySQL, по требованию заказчика или по обстоятельствам — SQLite, Redis, Mongo и прочие.\n\n_Какие инструменты виртуализации предпочитаете?_\n\nDocker. С его помощью запускаю unit-тесты с разными БД (разных версии PostgreSQL, MySQL), разными веб-серверами (Nginx, Apache2), разными версиями PHP.\n\nЗапускаю Selenium-тесты на разных браузерах (Chrome, Firefox).\n\n_Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?_\n\nДля любых разработчиков: git + code review = github или gitlab.\n\n\n## Алексей Уколов, технический директор в компании «Айтигро», занимается веб-разработкой более 10 лет\n\n\n\n_[Алексей Уколов](https://toster.ru/user/alexey-m-ukolov), компания [«Айтигро»](https://itgro.ru/)_\n___\n\n_Какой редактор или IDE вы используете?_\n\nНачинал с NetBeans, но довольно быстро перешёл на PhpStorm, и последние семь лет использую его. Почему перешёл, уже не помню точно, кажется, интерфейс казался неудобным. Свою стоимость PhpStorm оправдывает полностью — удобный интерфейс и умные подсказки значительно облегчают работу. \n\nПолезно смотреть или читать туториалы, чтобы знать о каких-то неочевидных функциях. Для новичков будет полезно включить настройку Show tips on startup, при помощи этого окна я тоже многие функции узнал.\n\nПростые редакторы тоже использую, но нечасто — обычно это nano или mceditor на серверах.\n\n_Что применяете для мониторинга производительности приложений?_\n\nУ нас нет какого-то прямо серьёзного хайлоада и распределённых систем, поэтому хватает данных «Яндекс.Метрики», чтобы увидеть есть ли какие-то проблемы. Наши админы настраивают Zabbix, и он предупреждает о «железных» проблемах. Бизнес-метрики собираем кастомным решением под каждый проект, потому что требования у всех свои.\n\nВо время разработки мы всегда профилируем приложение при помощи XHProf и создания какого-то похожего на правду объёма данных, поэтому многие проблемы до продакшена вообще не доезжают. Если всё-таки случаются тормоза, то запускаем XHProf уже на сервере для какого-то среза пользователей (об этом нужно думать заранее и разворачивать инфраструктуру, когда проблем нет, потому что поднимать XHProf на «горящем» проекте — удовольствие сомнительное). Если и это не помогает, подключаем NewRelic или okmeter.\n\n_С помощью каких решений обеспечиваете безопасность приложений?_\n\nКаких-то специальных инструментов не используем, просто помним о лучших практиках кода и проводим ревью. Современные фреймворки, в принципе, многое из этой области берут на себя.\n\n_Какие инструменты отладки используете?_\n\nПрактика показывает, что самый лучший инструмент — это Xdebug. Но часто запускать его лень, и проблема решается дампом каких-то данных на страницу или в консоль. Периодически я ловлю себя на том, что вывожу какие-то данные, копаюсь в них, а потом запускаю Xdebug и сразу нахожу проблему. Приучить себя сложно, но я стараюсь.\n\nЕщё на каждый проект ставим Laravel Debug Bar, но я обычно её сразу скрываю и практически никогда не пользуюсь. Хотя штука это довольно полезная — например, показывает, что какие-то запросы к БД дублируются, значит где-то есть проблема N+1.\n\n_Что используете для тестирования?_\n\nДля тестов используем PHPUnit и Mockery, плюс встроенные в Laravel тест-кейсы. Этого хватает для решения всех задач. У Laravel ещё есть браузерное тестирование через Dusk, но в нём пока большой необходимости не увидели.\n\nНесколько лет назад пытались подружить Behat и Битрикс — безуспешно. Сама идея Behat мне нравится, но когда тесты придумывают и пишут сами программисты, использование «литературного» описания кажется лишней прослойкой.\n\n_С каким веб-фреймворком работаете?_\n\nТолько с Laravel. Yii и Zend мне персонально не очень нравятся, когда я выбирал фреймворк, они выглядели устаревшими. Возможно, сейчас они догнали остальных по использованию каких-то стандартов индустрии (PSR и тому подобное), но переходить уже не вижу смысла — все мои задачи Laravel закрывает.\n\nSymfony выглядит привлекательно, и какие-то небольшие вещи я на ней писал, но у Laravel ниже порог входа, поэтому проще найти разработчиков.\n\n_Какие серверы и базы данных применяете?_\n\nНе очень понятно что подразумевается под серверами. Если железо, то не знаю — админы что-то собирают :) ОС используем разные, в зависимости от требований клиента. Кому-то важны разные сертификации надзорных органов — тогда берём какой-то не самый свежий Debian. Кому-то важно, чтобы релиз был LTS. Чаще всего используем Debian, CentOS и Ubuntu.\n\nСУБД, опять же, выбираем под проект. Обычно это последняя версия MySQL, но иногда клиенту нужна «экзотика». Приходилось писать и под PostgreSQL, и под MSSQL, и даже под SQLite.\n\n_Какие инструменты виртуализации предпочитаете?_\n\nСейчас на всех этапах разработки используем Docker — он стоит на локальных машинах разработчиков, на стейджинг-серверах и на продакшене.\n\nНа мой взгляд, глубоко погружаться в эту тему PHP-разработчику не нужно, у нас хватает своих забот в предметной области, так что умения написать несложный Docker-файл, запустить-остановить контейнер и собрать несколько контейнеров в приложение при помощи docker-compose должно быть достаточно. Это, конечно, при условии, что есть доступ к компетентным админам и девопсам.\n\n_Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?_\n\nОчень рекомендую использовать различные анализаторы кода, они реально ловят ошибки и помогают писать чище. Вот что я сразу ставлю на новый проект:\n\n* [phpstan](https://github.com/phpstan/phpstan)\n* [phpcpd](https://github.com/sebastianbergmann/phpcpd)\n* [php_codesniffer](https://github.com/squizlabs/PHP_CodeSniffer)\n* [php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)\n* [churn](https://github.com/bmitch/churn-php)\n\n\n## Максим Фёдоров, PHP-программист, «Яндекс.Еда»\n\n\n\n_[Максим Фёдоров](https://toster.ru/user/Maksclub)_\n___\n\n_Какой редактор или IDE вы используете?_\n\nPhpStorm.\n\n_Что применяете для мониторинга производительности приложений?_\n\nМало приходилось, немного через Blackfire от Symfony производительность мерил, сейчас будем с танком работать. Это разные вещи, но так или иначе этот вопрос решал с помощью этих инструментов в рамках своей работы.\n\n_С помощью каких решений обеспечиваете безопасность приложений?_\n\nТолько через ручное/обычное автоматическое тестирование без специальных решений.\n\n_Какие инструменты отладки используете?_\n\nXdebug.\n\n_Что используете для тестирования?_\n\nPHPUnit, Codeception + selenium, paratest.\n\n_С каким веб-фреймворком работаете?_\n\nSymfony (3.4 на работе, 4 для своих проектов).\n\n_Какие серверы и базы данных применяете?_\n\nMySQL, rabbitmq.\n\n_Какие инструменты виртуализации предпочитаете?_\n\nПредпочитаю вагрант, но работаю с докером :)\n\n_Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?_ \n\nPhpStan, php-CS-fixer обязательным набором идут, чего-то экзотического не особо использую.\n\n\n## Антон Морев, CTO в Wormsoft\n\n\n\n_[Антон Морев](https://wormsoft.ru/)_\n\n_Какой редактор или IDE вы используете?_\n\nPhpStorm (сначала были PSDPad, Sublime Text).\n\n_Что применяете для мониторинга производительности приложений?_\n\nAB, Siege\n\n_С помощью каких решений обеспечиваете безопасность приложений?_\n\nНе используем специальные решения.\n\n_Какие инструменты отладки используете?_\n\nXdebug.\n\n_Что используете для тестирования?_\n\nCodeception.\n\n_С каким веб-фреймворком работаете?_\n\nYii2, Laravel.\n\n_Какие серверы и базы данных применяете?_ \n\nMysql, PostgreSQL, MongoDB.\n\n_Какие инструменты виртуализации предпочитаете?_\n\nDocker.\n\n_Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?_\n\nPostman, Altair.\n\n\n## Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры «ВКонтакте»\n\n\n\n_[Искандер Шарипов](https://vk.com/quasilyte)_\n___\n\n_Какой редактор или IDE вы используете?_\n\nPhpStorm.\n\n_Какие инструменты отладки используете?_\n\nСтатический анализ, кодовое ревью. Ещё в kPHP к коду есть требование в указании большинства типов, поэтому PHP у нас во многом более строгий, из-за чего ошибки типов встречаются реже. Остальные ошибки пытаемся находить статическим анализом или во время тестирования.\n\n_Что используете для тестирования?_\n\nPHPUnit.\n\n_С каким веб-фреймворком работаете?_\n\nСвой собственный. На прошлой работе тоже были свои велосипеды, но ближе всего был Yii2.\n\n_Какие серверы и базы данных применяете?_\n\nВ ВК большая часть БД написанные нашей же командой. Но ещё используются MySQL и ClickHouse. Есть сервера под Nginx, но бывают и отдельно стоящие сервера на каком-нибудь Go (но перед ними тоже могут быть балансировщики). \n\n_Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?_ \n\n[Phpgrep](https://habr.com/ru/post/464893/) и [NoVerify](https://habr.com/ru/company/vk/blog/442284/).\n\n::posts\n\n## Илья Логинов, Senior PHP developer\n\n\n\n_[Илья Логинов](https://github.com/LoginovIlya)_\n___\n\n_Какой редактор или IDE вы используете?_\n\nPhpStorm, до этого был NetBeans, а до него Notepad++ с плагинами.\n\n_Что применяете для мониторинга производительности приложений?_\n\nОбычно Zabbix с доработками, изредка какой нибудь внутренний продукт компании\n\n_С помощью каких решений обеспечиваете безопасность приложений?_\n\nКастомные решения в виде bash скриптов, настройки окружения, логов и прочего.\n\n_Какие инструменты отладки используете?_\n\nXdebug.\n\n_Что используете для тестирования?_\n\nPHPUnit (+ Code Coverage).\n\n_С каким веб-фреймворком работаете?_\n\nСейчас с Laravel, до этого были Zend, Kohana, Codeigniter.\n\n_Какие серверы и базы данных применяете?_\n\nТут все зависит от требований к проекту, для некоторых подходит VPS с SqLite, другим продукты AWS требуются. Но в большинстве случаев это VDS и MySQL(MariaDB) или PostgreSQL.\n\n_Какие инструменты виртуализации предпочитаете?_\n\nУже давно не работал с системами виртуализации, сейчас только контейнеризация в виде Docker с Kubernetes.\n\n_Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?_ \n\nVim.\n\n___\n\nПожалуйста, напишите в комментариях, какими инструментами в повседневной работе с PHP-кодом пользуетесь вы.\n","reading_time":9,"url":"https://ru.hexlet.io/blog/posts/chto-ispolzuyut-php-programmisty-kakie-ide-i-redaktory-sredstva-otladki-testirovaniya-i-virtualizatsii-vostrebovany-professionalami","cover_thumb_variant":null,"cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp","cover_main_variant":"/vite/assets/blog_post-7eTyeLLt.webp","related_stacks_count":5},"relatedPosts":[{"model_name":"BlogPost","id":416,"title":"Язык программирования JavaScript: где его используют и почему он популярен","slug":"stoit-li-uchit-javascript-perspektivy-situatsiya-na-rynke-truda-mneniya-ekspertov","summary":"Рассказываем, что это за язык программирования — JavaScript, где его используют, насколько он популярен и с чего начать изучение JavaScript.","created_at":"2019-07-26T08:17:06.287Z","published_at":"2023-10-04T08:41:58.734Z","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMywicHVyIjoiYmxvYl9pZCJ9fQ==--aa69869c906a992728ba7c26886fa1b715024424/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%8F%D0%B7%D1%8B%D0%BA%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8Fjavascript-01.png"},{"model_name":"BlogPost","id":362,"title":"Язык программирования PHP: рейтинг, сферы применения, прогнозы экспертов","slug":"zachem-izuchat-php-reyting-perspektivy-sfery-primeneniya","summary":"Рассказываем, зачем и где учить PHP, где его применяют, сколько зарабатывают PHP-разработчики, а также приводим мнения экспертов о перспективах и популярности языка. ","created_at":"2019-06-21T09:57:49.863Z","published_at":"2023-03-24T11:43:13.709Z","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTcxNSwicHVyIjoiYmxvYl9pZCJ9fQ==--483469e30822f45e5959af1ca8e34c28c3fe28db/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%81%D1%87%D0%B5%D0%B3%D0%BE%D0%BD%D0%B0%D1%87%D0%B0%D1%82%D1%8C%D0%B8%D0%B7%D1%83%D1%87%D0%B0%D1%82%D1%8Cphp-2-01.png"},{"model_name":"BlogPost","id":12,"title":"Среды разработки: какие они бывают и чем отличаются друг от друга","slug":"environment","summary":"Сооснователь Хекслета Кирилл Мокевнин рассказывает, какие бывают среды разработки, как проводится контроль и испытание фичи и что такое интеграция.","created_at":"2016-08-23T14:10:57.533Z","published_at":"2023-03-21T13:40:16.878Z","cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp"}],"category":{"id":4,"name":"Код","slug":"code","state":"published","created_at":"2016-08-23T13:33:44.258Z"},"mainStackCategory":{"id":2,"name":"Курсы по веб-разработке","slug":"web_development","short_name":"Веб-разработка","order":190,"state":"published","category_slug":"courses_web_development"},"categories":[{"id":6,"name":"Мотивация","slug":"motivation","state":"published","created_at":"2016-10-06T18:31:38.903Z"},{"id":3,"name":"Истории успеха","slug":"success","state":"published","created_at":"2016-07-30T12:57:18.308Z"},{"id":14,"name":"Дневник студента","slug":"student-diary","state":"published","created_at":"2019-02-25T13:27:09.471Z"},{"id":4,"name":"Код","slug":"code","state":"published","created_at":"2016-08-23T13:33:44.258Z"},{"id":12,"name":"Карьера","slug":"career","state":"published","created_at":"2017-07-21T15:42:21.481Z"}],"relatedLandings":[{"stack":{"id":2,"slug":"php","title":"PHP-разработчик","audience":"for_beginners","start_type":"weekly","pricing_model":"purchase","priority":"high","kind":"profession","state":"published","stack_state":"finished","order":60,"duration_in_months":10},"id":1,"slug":"php","title":"РНР-разработчик","subtitle":"Изучите PHP и Laravel для разработки и проектирования REST API","subtitle_for_lists":"Изучите PHP и Laravel для разработки и проектирования REST API","locale":"ru","current":true,"duration_in_months_text":"10 месяцев","stack_slug":"php","price_text":"от 5 650 ₽","duration_text":"10 месяцев","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzk5MiwicHVyIjoiYmxvYl9pZCJ9fQ==--e9d0f30948ea766a7e6bc3e3d56c192344d45fb8/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-cuate%20(1).png"},{"stack":{"id":25,"slug":"php-oop","title":"ООП В PHP","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4300,"duration_in_months":2},"id":38,"slug":"php-oop","title":"ООП В PHP","subtitle":"Навык глубокого понимания архитектуры и написания чистого кода, позволяющий решать сложные задачи","subtitle_for_lists":"Изучите архитектуру и чистый код на PHP","locale":"ru","current":true,"duration_in_months_text":"2 месяца","stack_slug":"php-oop","price_text":"от 3 900 ₽","duration_text":"2 месяца","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e5793a1818ff43d73135cc7ed88c1998d7650470/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Developer%20activity-bro.png"},{"stack":{"id":39,"slug":"php-phpunit-testing","title":"Автоматизация тестирования на PHP","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":1900,"duration_in_months":4},"id":66,"slug":"php-phpunit-testing","title":"Автоматизация тестирования на PHP","subtitle":"Навык написания тестов и применения продвинутых подходов, повышающий качество кода","subtitle_for_lists":"Навык тестирования на PHP","locale":"ru","current":true,"duration_in_months_text":"4 месяца","stack_slug":"php-phpunit-testing","price_text":"от 3 900 ₽","duration_text":"4 месяца","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzkzNSwicHVyIjoiYmxvYl9pZCJ9fQ==--06c469e64c9b6c8429a6a01edd20041dae30ce13/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20code%20testing-bro.png"},{"stack":{"id":22,"slug":"php-laravel-development","title":"Laravel","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":250,"duration_in_months":1},"id":32,"slug":"php-laravel-developer","title":"Laravel","subtitle":"Laravel — Навык создания веб-приложений с помощью Laravel, необходимый для старта карьеры PHP-разработчика","subtitle_for_lists":"Изучите фреймворк Laravel для создания веб-приложений","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"php-laravel-development","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcyMSwicHVyIjoiYmxvYl9pZCJ9fQ==--b4d9b4d245e88f43c7f861ac11e675846937c317/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programmer-bro.png"},{"stack":{"id":179,"slug":"fullstack-php","title":"Fullstack-разработчик на PHP","audience":"for_beginners","start_type":"weekly","pricing_model":"purchase","priority":"high","kind":"profession","state":"published","stack_state":"finished","order":null,"duration_in_months":16},"id":279,"slug":"fullstack-php","title":"Fullstack-разработчик на PHP","subtitle":"","subtitle_for_lists":null,"locale":"ru","current":true,"duration_in_months_text":"16 месяцев","stack_slug":"fullstack-php","price_text":"от 7 934 ₽","duration_text":"16 месяцев","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2OSwicHVyIjoiYmxvYl9pZCJ9fQ==--cbbaa606be07bca305bd21d9919235989a1ed289/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Code%20typing-amico.png"}]},"url":"/blog/posts/chto-ispolzuyut-php-programmisty-kakie-ide-i-redaktory-sredstva-otladki-testirovaniya-i-virtualizatsii-vostrebovany-professionalami","version":"0b0c6d4ebbd40fd58630a0dd89cc25544ccdf24e","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","author":"Дмитрий Дементий","name":"Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами","datePublished":"2019-09-17T07:17:48.922Z","headline":"Мы попросили опытных PHP-программисты рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.","image":"/vite/assets/blog_post-7eTyeLLt.webp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":9}]}</script><div style="--container-size:var(--container-size-lg);margin-top:var(--mantine-spacing-xl);height:100%" class="m_7485cace mantine-Container-root" data-size="lg" data-strategy="block"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"position":1,"@type":"ListItem","item":{"@id":"/blog","name":"Блог Хекслета"}},{"position":2,"@type":"ListItem","item":{"@id":"/blog/categories/code","name":"Код"}},{"position":3,"@type":"ListItem","item":{"@id":"/blog/posts/chto-ispolzuyut-php-programmisty-kakie-ide-i-redaktory-sredstva-otladki-testirovaniya-i-virtualizatsii-vostrebovany-professionalami","name":"Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами"}}]}</script><div style="margin-bottom:var(--mantine-spacing-xs)" class="m_8b3717df mantine-Breadcrumbs-root"><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/"><div style="color:inherit" class="m_4451eb3a mantine-Center-root"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-home-link "><path d="M20.085 11.085l-8.085 -8.085l-9 9h2v7a2 2 0 0 0 2 2h4.5"></path><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 1.807 1.143"></path><path d="M20 21a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M20 16a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M15 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M21 16l-5 3l5 2"></path></svg></div></a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/blog">Блог Хекслета</a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/blog/categories/code">Код</a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><p style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:var(--mantine-color-dimmed)" class="mantine-focus-auto m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root" data-size="sm">Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами</p></div><style data-mantine-styles="inline">.__m__-_R_eub_{margin-bottom:var(--mantine-spacing-xs);}@media(min-width: 36em){.__m__-_R_eub_{margin-bottom:var(--mantine-spacing-xs);}}</style><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root __m__-_R_eub_"><style data-mantine-styles="inline">.__m__-_R_deub_{width:100%;}@media(min-width: 36em){.__m__-_R_deub_{width:70%;}}@media(min-width: 75em){.__m__-_R_deub_{width:75%;}}</style><div class="__m__-_R_deub_"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size)" class="m_8a5d1357 mantine-Title-root" data-order="1">Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами</h1></div></div></div><div style="position:absolute;top:calc(18.75rem * var(--mantine-scale))" class=""></div><style data-mantine-styles="inline">.__m__-_R_2iub_{--grid-gutter:var(--mantine-spacing-xl);}</style><div class="m_410352e9 mantine-Grid-root __m__-_R_2iub_"><div class="m_dee7bd2f mantine-Grid-inner"><style data-mantine-styles="inline">.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:100%;--col-max-width:100%;}@media(min-width: 48em){.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}@media(min-width: 62em){.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:66.66666666666667%;--col-max-width:66.66666666666667%;}}</style><div class="m_96bdd299 mantine-Grid-col __m__-_R_dmiub_"><div style="--stack-gap:var(--mantine-spacing-md);--stack-align:stretch;--stack-justify:flex-start;margin-bottom:var(--mantine-spacing-xl)" class="m_6d731127 mantine-Stack-root"><div class=""><div style="--group-gap:var(--mantine-spacing-xs);--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-xl)" class="m_4081bf90 mantine-Group-root"><button style="--badge-height:var(--badge-height-sm);--badge-padding-x:var(--badge-padding-x-sm);--badge-fz:var(--badge-fz-sm);--badge-bg:var(--mantine-color-default);--badge-color:var(--mantine-color-default-color);--badge-bd:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);cursor:pointer;color:inherit" class="m_347db0ec mantine-Badge-root" data-variant="default" data-size="sm" type="button" aria-label="PHP"><span class="m_5add502a mantine-Badge-label">PHP</span></button><button style="--badge-height:var(--badge-height-sm);--badge-padding-x:var(--badge-padding-x-sm);--badge-fz:var(--badge-fz-sm);--badge-bg:var(--mantine-color-default);--badge-color:var(--mantine-color-default-color);--badge-bd:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);cursor:pointer;color:inherit" class="m_347db0ec mantine-Badge-root" data-variant="default" data-size="sm" type="button" aria-label="Тестирование"><span class="m_5add502a mantine-Badge-label">Тестирование</span></button></div><div style="--group-gap:calc(0.625rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-sm);color:var(--mantine-color-gray-text)" class="m_4081bf90 mantine-Group-root"><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-inline-end:var(--mantine-spacing-lg)" class="m_4081bf90 mantine-Group-root">17 сентября 2019 г.</div><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-clock "><path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0"></path><path d="M12 7v5l3 3"></path></svg></div>9 минут</div><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-thumb-up "><path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3"></path></svg></div>9</div></div><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img style="--image-radius:var(--mantine-radius-md);--image-object-fit:cover;width:100%;height:100%" class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" alt="Что используют PHP-программисты: какие IDE и редакторы, средства отладки, тестирования и виртуализации востребованы профессионалами"/></div></div><div role="link" tabindex="0" style="cursor:pointer"><button style="display:block;width:100%" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Присоединяйтесь к нашему Telegram-сообществу"><div style="background-color:light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6))" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:auto;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-telegram "><path d="M15 10l-4 4l6 6l4 -16l-18 7l4 2l2 6l3 -4"></path></svg></div>Присоединяйтесь к нашему Telegram-сообществу</div></div></button></div><div style="margin-bottom:var(--mantine-spacing-xl)" class="m_d08caa0 mantine-Typography-root"><p>Мы попросили опытных PHP-программистов рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.</p>
<h2 id="heading-2-1">Содержание</h2>
<ul>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-2">Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-3">Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-4">Алексей Уколов, технический директор в компании «Айтигро», занимается веб-разработкой более 10 лет</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-5">Максим Фёдоров, PHP-программист, «Яндекс.Еда»</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-6">Антон Морев, CTO в Wormsoft</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-7">Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры «ВКонтакте»</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-8">Илья Логинов, Senior PHP developer</a></li>
</ul>
<h2 id="heading-2-2">Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://i.imgur.com/IVmO2mQ.jpg" alt="Евгений Вольф" loading="lazy"/></p>
<p><em><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://vk.com/wolfalone" rel="noopener noreferrer" target="_blank">Евгений Вольф</a></em>, <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://2vgroup.ru/" rel="noopener noreferrer" target="_blank">W-Group</a></p>
<hr/>
<p><em>Какой редактор или IDE вы используете?</em></p>
<p>Использую PhpStorm (оплаченная коммерческая версия), так как это, пожалуй, единственная на сегодняшний день полноценная IDE, она всегда идёт в ногу со временем, в том числе поддерживает все основные фреймворки (Symfony, Laravel, etc.), имеет поддержку новых версий PHP по мере их выхода и так далее.</p>
<p>Раньше активно пользовался NetBeans в виду его бесплатности и хорошей поддержки нашей кодовой базы, но в какой-то момент NetBeans начал сильно отставать от выхода новых версий PHP, а потом Oracle и вовсе отказался от его развития, передав его в руки Apache Software foundation, которые, в свою очередь, разумеется начали его развивать в сторону поддержки Java в первую очередь. По итогу, на данный момент NetBeans в некоторой степени можно назвать лучшей бесплатной IDE, но она очень сильно проигрывает конкурентам как по функционалу, так и по поддержке современных версий PHP.</p>
<p>В плане редакторов, мне нравятся Atom, Visual studio code и, пожалуй, Notepad++. Обычно использую их для работы уровня «что-то поправить». С этой задачей они справляются отлично, выглядят приятно, относительно мало потребляют ресурсов, имеют подсветку синтаксиса, встроенную консоль и работу с Git'ом.</p>
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
<p>Для мониторинга производительности приложений применяем top/htop. Это программы для линукса, которые показывают текущую нагрузку на сервер. Также применяем встроенные в Google Chrome средства для мониторинга производительности, скорости загрузки и так далее, и прочие инструменты, доступные в Google Chrome.</p>
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
<p>Безопасность обеспечиваем по старинке, выглядит это примерно так: мне известны все основные потенциальные дыры на уровне приложения и веб-сервера, а также способы атак. Код пишется таким образом, чтобы нивелировать все гипотетические последствия подобных атак.</p>
<style data-mantine-styles="inline">.__m__-_R_vderddmiub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:70%;}@media(min-width: 36em){.__m__-_R_vderddmiub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_vderddmiub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/php?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">10 месяцев</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">РНР-разработчик</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите PHP и Laravel для разработки и проектирования REST API</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzk5MiwicHVyIjoiYmxvYl9pZCJ9fQ==--e9d0f30948ea766a7e6bc3e3d56c192344d45fb8/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-cuate%20(1).png" alt="РНР-разработчик" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 5 650 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/php-oop?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">2 месяца</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">ООП В PHP</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите архитектуру и чистый код на PHP</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e5793a1818ff43d73135cc7ed88c1998d7650470/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Developer%20activity-bro.png" alt="ООП В PHP" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/php-phpunit-testing?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">4 месяца</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Автоматизация тестирования на PHP</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Навык тестирования на PHP</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzkzNSwicHVyIjoiYmxvYl9pZCJ9fQ==--06c469e64c9b6c8429a6a01edd20041dae30ce13/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20code%20testing-bro.png" alt="Автоматизация тестирования на PHP" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/php-laravel-developer?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Laravel</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите фреймворк Laravel для создания веб-приложений</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzcyMSwicHVyIjoiYmxvYl9pZCJ9fQ==--b4d9b4d245e88f43c7f861ac11e675846937c317/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programmer-bro.png" alt="Laravel" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/fullstack-php?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">16 месяцев</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Fullstack-разработчик на PHP</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root"></p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2OSwicHVyIjoiYmxvYl9pZCJ9fQ==--cbbaa606be07bca305bd21d9919235989a1ed289/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Code%20typing-amico.png" alt="Fullstack-разработчик на PHP" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 7 934 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md);font-size:var(--mantine-font-size-h3)" class="m_8a5d1357 mantine-Title-root" data-order="2" data-responsive="true">Каталог</h2><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Полный список доступных курсов по разным направлениям</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="/vite/assets/development-BVihs_d5.png" alt="Orientation"/></div></div></div></a></div></div></div></div></div>
<p>Все известные мне приложения и сервисы по проверке безопасности находят уязвимости, которыми пользуются хакеры уровня «школьник», не более того. И особой ценности подобная информация для меня не представляет, так как все эти уязвимости стары как мир и общеизвестны. Возможно я старомоден, но я считаю, что руки + голова + firewall решают 99 % проблем с безопасностью приложений и серверов.</p>
<p><em>Какие инструменты отладки используете?</em></p>
<p>Для отладки PHP используем Xdebug. Не уверен, что у него есть альтернативы заслуживающие особого внимания. Для отладки Laravel-проектов также используем barryvdh/laravel-debugbar (php debugbar), в Symfony же была собственная весьма неплохая отладочная панель.</p>
<p><em>Что используете для тестирования?</em></p>
<p>Как базовый (основной/первичный) инструмент используем PHPUnit, а далее в зависимости от сложности и требований конкретного проекта. Иногда тесты не пишем вообще.</p>
<p><em>С каким веб-фреймворком работаете?</em></p>
<p>Работали мы с очень многими фреймворками, начиная от таких «мамонтов», как CodeIgniter, Kohana, CakePHP и так далее, включая экзотику, например, Phalcon. Сейчас остановили свой выбор исключительно на Laravel и не перестаём посматривать <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/kakoy-php-freymvork-vybrat-sravnivaem-symphony-laravel-i-yii2" rel="noopener noreferrer" target="_blank">в сторону Symfony</a>. Пока мы ей не смогли найти достойного применения ввиду того, что она нещадно тормозит, кто бы что не говорил, но производительности ей сильно не хватает и это факт.</p>
<p>Достаточно долго (вынужденно) пришлось поработать с Yii 1.x и 2.х. От его использования мы полностью отказались, так как проект находится в стадии предсмертной агонии. За последние 5+ лет, по моим наблюдениям, в Yii2 было исправлено около половины из 400+ заявленных багов. На этом собственно и всё. Никакого нового функционала не появилось, возможности современных (вышедших далеко не вчера) версий PHP данный фреймворк не использует, новых версий особо не выходит, проект если и не совсем мёртв, то слишком долго топчется на одном месте, ввиду чего по нашему мнению он мало ликвиден и используется в основном теми, кто не имеет достаточной экспертизы в Laravel и/или Symfony.</p>
<p><em>Какие серверы и базы данных применяете?</em></p>
<p>Базы данных... Ну, в первую очередь, это конечно же MySQL, куда же без него, но без фанатизма.</p>
<p>Если проект публичный (OpenSource) или просто мелкий/простой, MySQL подходит идеально, его все знают, а некоторые даже любят. Но при серьёзных проектах и нагрузках MySQL не лишен ряда существенных недостатков. Начиная с отсутствия поддержки современных стандартов SQL до того, что при больших объёмах база может просто посыпаться.</p>
<p>Также у MySQL есть ряд технических коллизий, в частности в MySQL практически отсутствует такой механизм, как планировщик запросов. Он не может использовать более одного индекса на запрос, отсутствует многопоточность запросов и MVCC, есть ограничения на размер одной записи индекса, набор индексов довольно скудный, функционал сильно отстаёт от «старших собратьев».</p>
<p>Например, оконные функции появились в MySQL только с версии 8.0, поддержка JSON тоже появилась относительно недавно (с версии 5.7 кажется), но JSON-поля в MySQL текстовые и не индексируются. А также масса других объективных недостатков данной БД. Часть из которых подтверждается наличием множества форков данный БД, наиболее известные из которых — MariaDB, Percona. Что в принципе ожидаемо, так как после покупки данного проекта Oracle вполне логично предположить, что Oracle не даст проекту сильно развиваться и составить конкуренцию их основной (платной) БД. По этому, для серьёзных проектов мы используем PostgreSQL.</p>
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
<p>Для виртуализации активно используем Docker, так как он позволяет решать проблему различия сред (то есть когда у одного работает, а другого нет), а также он позволяет упаковывать приложения, передавая их как единой целое (приложение + все прикладные его части + настройки ОС, включая её саму и так далее), что в целом довольно удобно.</p>
<p>Конечно, Docker — это далеко не серебряная пуля, и у него хватает своих «тараканов», но в целом это неплохое решение для ряда задач (ввиду того, что ничего лучше пока не придумали).</p>
<p>Очень жаль, что под ОС Windows Docker работает весьма посредственно, но для себя мы решили эту проблему, просто отказавшись от Windows в пользу Linux. Иногда используем VirtualBox, LXC/LXD. Если бы LXC/LXD был более переносим, я имею в виду простоту переноса и отсутствие лишних телодвижений, между разными ОС или хотя бы внутри Linux, цены бы ему не было, так как в отличии от Docker LXC/LXD эмулирует полноценную ОС, включая систему инициализации, что в ряде случаев было бы куда лучшим решением, чем куча отдельных Docker-контейнеров для одного приложения. Другие системы виртуализации нам хорошо знакомы, но ввиду отсутствия какой-либо необходимости в них в нашей работе я о них просто не упоминаю.</p>
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
<p>В первую очередь, я думаю, это ОС Linux, позволяющая разрабатывать приложения в родной для них среде со всеми вытекающими. Хорошая IDE, умение пользоваться инструментами ОС Linux (в частности иногда очень сильно выручает редактор VI[M], такие инструменты как find, grep, ssh, tail и многие другие), пара веб-серверов (Nginx, Apache — да, вы не ослышались, иногда мы используем Apache по вполне конкретным причинам), свежая версия PHP, ну и общее понимание принимаемых решений, то есть осознанный выбор на уровне полного понимания последствий, а не на уровне интуиции, — вот, пожалуй, самые важные инструменты для веб-разработчика.</p>
<p>И да, в 99% случаев мы не используем CMS вообще.</p>
<h2 id="heading-2-3">Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://i.imgur.com/zRTsWgH.jpg" alt="Борис Коробков" loading="lazy"/></p>
<p><em><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.youtube.com/channel/UCQqEK815PqZiQnhIthjqxaA" rel="noopener noreferrer" target="_blank">Борис Коробков</a></em></p>
<hr/>
<p><em>Какой редактор или IDE вы используете?</em></p>
<p>Более 10 лет назад — NetBeans, других альтернатив тогда не было. Потом PhpStorm — он удобнее, чем NetBeans. Работодатель оплачивал лицензию. Сейчас Visual Studio Code — такой же удобный, но бесплатный.</p>
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
<p>При локальной отладке — breakpoint средствами фреймворка. На продакшене — Nagios (так исторически сложилось), slow query log, iostat и так далее.</p>
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
<p>Ввод, вывод, БД — средствами фреймворка: Request, Response, ORM. Статические анализаторы кода: Php Inspections, CodeSniffer. Сканеры: Nmap.</p>
<p><em>Какие инструменты отладки используете?</em></p>
<p>Xdebug.</p>
<p><em>Что используете для тестирования?</em></p>
<p>PHPUnit, Selenium.</p>
<p><em>С каким веб-фреймворком работаете?</em></p>
<p>Есть опыт работы со многими фреймворками, включая самописные. Если делать простой сайт для себя just for fun, вероятно, выберу Yii2. Если выбирать фреймворк для серьезного проекта, надо учесть много факторов.</p>
<p><em>Какие серверы и базы данных применяете?</em></p>
<p>На новых серверах ставлю CentOS, на старых работаю с тем, что есть. Из БД предпочитаю PostgreSQL, иногда использую MySQL, по требованию заказчика или по обстоятельствам — SQLite, Redis, Mongo и прочие.</p>
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
<p>Docker. С его помощью запускаю unit-тесты с разными БД (разных версии PostgreSQL, MySQL), разными веб-серверами (Nginx, Apache2), разными версиями PHP.</p>
<p>Запускаю Selenium-тесты на разных браузерах (Chrome, Firefox).</p>
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
<p>Для любых разработчиков: git + code review = github или gitlab.</p>
<h2 id="heading-2-4">Алексей Уколов, технический директор в компании «Айтигро», занимается веб-разработкой более 10 лет</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://i.imgur.com/sWr8GoJ.jpg" alt="Алексей Уколов" loading="lazy"/></p>
<p><em><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://toster.ru/user/alexey-m-ukolov" rel="noopener noreferrer" target="_blank">Алексей Уколов</a>, компания <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://itgro.ru/" rel="noopener noreferrer" target="_blank">«Айтигро»</a></em></p>
<hr/>
<p><em>Какой редактор или IDE вы используете?</em></p>
<p>Начинал с NetBeans, но довольно быстро перешёл на PhpStorm, и последние семь лет использую его. Почему перешёл, уже не помню точно, кажется, интерфейс казался неудобным. Свою стоимость PhpStorm оправдывает полностью — удобный интерфейс и умные подсказки значительно облегчают работу.</p>
<p>Полезно смотреть или читать туториалы, чтобы знать о каких-то неочевидных функциях. Для новичков будет полезно включить настройку Show tips on startup, при помощи этого окна я тоже многие функции узнал.</p>
<p>Простые редакторы тоже использую, но нечасто — обычно это nano или mceditor на серверах.</p>
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
<p>У нас нет какого-то прямо серьёзного хайлоада и распределённых систем, поэтому хватает данных «Яндекс.Метрики», чтобы увидеть есть ли какие-то проблемы. Наши админы настраивают Zabbix, и он предупреждает о «железных» проблемах. Бизнес-метрики собираем кастомным решением под каждый проект, потому что требования у всех свои.</p>
<p>Во время разработки мы всегда профилируем приложение при помощи XHProf и создания какого-то похожего на правду объёма данных, поэтому многие проблемы до продакшена вообще не доезжают. Если всё-таки случаются тормоза, то запускаем XHProf уже на сервере для какого-то среза пользователей (об этом нужно думать заранее и разворачивать инфраструктуру, когда проблем нет, потому что поднимать XHProf на «горящем» проекте — удовольствие сомнительное). Если и это не помогает, подключаем NewRelic или okmeter.</p>
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
<p>Каких-то специальных инструментов не используем, просто помним о лучших практиках кода и проводим ревью. Современные фреймворки, в принципе, многое из этой области берут на себя.</p>
<p><em>Какие инструменты отладки используете?</em></p>
<p>Практика показывает, что самый лучший инструмент — это Xdebug. Но часто запускать его лень, и проблема решается дампом каких-то данных на страницу или в консоль. Периодически я ловлю себя на том, что вывожу какие-то данные, копаюсь в них, а потом запускаю Xdebug и сразу нахожу проблему. Приучить себя сложно, но я стараюсь.</p>
<p>Ещё на каждый проект ставим Laravel Debug Bar, но я обычно её сразу скрываю и практически никогда не пользуюсь. Хотя штука это довольно полезная — например, показывает, что какие-то запросы к БД дублируются, значит где-то есть проблема N+1.</p>
<p><em>Что используете для тестирования?</em></p>
<p>Для тестов используем PHPUnit и Mockery, плюс встроенные в Laravel тест-кейсы. Этого хватает для решения всех задач. У Laravel ещё есть браузерное тестирование через Dusk, но в нём пока большой необходимости не увидели.</p>
<p>Несколько лет назад пытались подружить Behat и Битрикс — безуспешно. Сама идея Behat мне нравится, но когда тесты придумывают и пишут сами программисты, использование «литературного» описания кажется лишней прослойкой.</p>
<p><em>С каким веб-фреймворком работаете?</em></p>
<p>Только с Laravel. Yii и Zend мне персонально не очень нравятся, когда я выбирал фреймворк, они выглядели устаревшими. Возможно, сейчас они догнали остальных по использованию каких-то стандартов индустрии (PSR и тому подобное), но переходить уже не вижу смысла — все мои задачи Laravel закрывает.</p>
<p>Symfony выглядит привлекательно, и какие-то небольшие вещи я на ней писал, но у Laravel ниже порог входа, поэтому проще найти разработчиков.</p>
<p><em>Какие серверы и базы данных применяете?</em></p>
<p>Не очень понятно что подразумевается под серверами. Если железо, то не знаю — админы что-то собирают :) ОС используем разные, в зависимости от требований клиента. Кому-то важны разные сертификации надзорных органов — тогда берём какой-то не самый свежий Debian. Кому-то важно, чтобы релиз был LTS. Чаще всего используем Debian, CentOS и Ubuntu.</p>
<p>СУБД, опять же, выбираем под проект. Обычно это последняя версия MySQL, но иногда клиенту нужна «экзотика». Приходилось писать и под PostgreSQL, и под MSSQL, и даже под SQLite.</p>
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
<p>Сейчас на всех этапах разработки используем Docker — он стоит на локальных машинах разработчиков, на стейджинг-серверах и на продакшене.</p>
<p>На мой взгляд, глубоко погружаться в эту тему PHP-разработчику не нужно, у нас хватает своих забот в предметной области, так что умения написать несложный Docker-файл, запустить-остановить контейнер и собрать несколько контейнеров в приложение при помощи docker-compose должно быть достаточно. Это, конечно, при условии, что есть доступ к компетентным админам и девопсам.</p>
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
<p>Очень рекомендую использовать различные анализаторы кода, они реально ловят ошибки и помогают писать чище. Вот что я сразу ставлю на новый проект:</p>
<ul>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://github.com/phpstan/phpstan" rel="noopener noreferrer" target="_blank">phpstan</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://github.com/sebastianbergmann/phpcpd" rel="noopener noreferrer" target="_blank">phpcpd</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://github.com/squizlabs/PHP_CodeSniffer" rel="noopener noreferrer" target="_blank">php_codesniffer</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://github.com/FriendsOfPHP/PHP-CS-Fixer" rel="noopener noreferrer" target="_blank">php-cs-fixer</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://github.com/bmitch/churn-php" rel="noopener noreferrer" target="_blank">churn</a></li>
</ul>
<h2 id="heading-2-5">Максим Фёдоров, PHP-программист, «Яндекс.Еда»</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://i.imgur.com/tPKiv13.jpg" alt="Максим Фёдоров" loading="lazy"/></p>
<p><em><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://toster.ru/user/Maksclub" rel="noopener noreferrer" target="_blank">Максим Фёдоров</a></em></p>
<hr/>
<p><em>Какой редактор или IDE вы используете?</em></p>
<p>PhpStorm.</p>
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
<p>Мало приходилось, немного через Blackfire от Symfony производительность мерил, сейчас будем с танком работать. Это разные вещи, но так или иначе этот вопрос решал с помощью этих инструментов в рамках своей работы.</p>
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
<p>Только через ручное/обычное автоматическое тестирование без специальных решений.</p>
<p><em>Какие инструменты отладки используете?</em></p>
<p>Xdebug.</p>
<p><em>Что используете для тестирования?</em></p>
<p>PHPUnit, Codeception + selenium, paratest.</p>
<p><em>С каким веб-фреймворком работаете?</em></p>
<p>Symfony (3.4 на работе, 4 для своих проектов).</p>
<p><em>Какие серверы и базы данных применяете?</em></p>
<p>MySQL, rabbitmq.</p>
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
<p>Предпочитаю вагрант, но работаю с докером :)</p>
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
<p>PhpStan, php-CS-fixer обязательным набором идут, чего-то экзотического не особо использую.</p>
<h2 id="heading-2-6">Антон Морев, CTO в Wormsoft</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://i.imgur.com/2h6mmxs.jpg" alt="Антон Морев" loading="lazy"/></p>
<p><em><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://wormsoft.ru/" rel="noopener noreferrer" target="_blank">Антон Морев</a></em></p>
<p><em>Какой редактор или IDE вы используете?</em></p>
<p>PhpStorm (сначала были PSDPad, Sublime Text).</p>
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
<p>AB, Siege</p>
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
<p>Не используем специальные решения.</p>
<p><em>Какие инструменты отладки используете?</em></p>
<p>Xdebug.</p>
<p><em>Что используете для тестирования?</em></p>
<p>Codeception.</p>
<p><em>С каким веб-фреймворком работаете?</em></p>
<p>Yii2, Laravel.</p>
<p><em>Какие серверы и базы данных применяете?</em></p>
<p>Mysql, PostgreSQL, MongoDB.</p>
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
<p>Docker.</p>
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
<p>Postman, Altair.</p>
<h2 id="heading-2-7">Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры «ВКонтакте»</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://i.imgur.com/5UPrN17.jpg" alt="Искандер Шарипов" loading="lazy"/></p>
<p><em><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://vk.com/quasilyte" rel="noopener noreferrer" target="_blank">Искандер Шарипов</a></em></p>
<hr/>
<p><em>Какой редактор или IDE вы используете?</em></p>
<p>PhpStorm.</p>
<p><em>Какие инструменты отладки используете?</em></p>
<p>Статический анализ, кодовое ревью. Ещё в kPHP к коду есть требование в указании большинства типов, поэтому PHP у нас во многом более строгий, из-за чего ошибки типов встречаются реже. Остальные ошибки пытаемся находить статическим анализом или во время тестирования.</p>
<p><em>Что используете для тестирования?</em></p>
<p>PHPUnit.</p>
<p><em>С каким веб-фреймворком работаете?</em></p>
<p>Свой собственный. На прошлой работе тоже были свои велосипеды, но ближе всего был Yii2.</p>
<p><em>Какие серверы и базы данных применяете?</em></p>
<p>В ВК большая часть БД написанные нашей же командой. Но ещё используются MySQL и ClickHouse. Есть сервера под Nginx, но бывают и отдельно стоящие сервера на каком-нибудь Go (но перед ними тоже могут быть балансировщики).</p>
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
<p><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://habr.com/ru/post/464893/" rel="noopener noreferrer" target="_blank">Phpgrep</a> и <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://habr.com/ru/company/vk/blog/442284/" rel="noopener noreferrer" target="_blank">NoVerify</a>.</p>
<style data-mantine-styles="inline">.__m__-_R_9bderddmiub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:80%;}@media(min-width: 36em){.__m__-_R_9bderddmiub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_9bderddmiub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/stoit-li-uchit-javascript-perspektivy-situatsiya-na-rynke-truda-mneniya-ekspertov"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMywicHVyIjoiYmxvYl9pZCJ9fQ==--aa69869c906a992728ba7c26886fa1b715024424/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%8F%D0%B7%D1%8B%D0%BA%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8Fjavascript-01.png" loading="lazy" alt="Язык программирования JavaScript: где его используют и почему он популярен"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Язык программирования JavaScript: где его используют и почему он популярен</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Рассказываем, что это за язык программирования — JavaScript, где его используют, насколько он поп...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">4 октября 2023 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/zachem-izuchat-php-reyting-perspektivy-sfery-primeneniya"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTcxNSwicHVyIjoiYmxvYl9pZCJ9fQ==--483469e30822f45e5959af1ca8e34c28c3fe28db/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%81%D1%87%D0%B5%D0%B3%D0%BE%D0%BD%D0%B0%D1%87%D0%B0%D1%82%D1%8C%D0%B8%D0%B7%D1%83%D1%87%D0%B0%D1%82%D1%8Cphp-2-01.png" loading="lazy" alt="Язык программирования PHP: рейтинг, сферы применения, прогнозы экспертов"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Язык программирования PHP: рейтинг, сферы применения, прогнозы экспертов</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Рассказываем, зачем и где учить PHP, где его применяют, сколько зарабатывают PHP-разработчики, а ...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">24 марта 2023 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/environment"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" loading="lazy" alt="Среды разработки: какие они бывают и чем отличаются друг от друга"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Среды разработки: какие они бывают и чем отличаются друг от друга</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Сооснователь Хекслета Кирилл Мокевнин рассказывает, какие бывают среды разработки, как проводится...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">21 марта 2023 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div></div></div></div>
<h2 id="heading-2-8">Илья Логинов, Senior PHP developer</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://i.imgur.com/H92K2Cv.jpg" alt="Илья Логинов" loading="lazy"/></p>
<p><em><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://github.com/LoginovIlya" rel="noopener noreferrer" target="_blank">Илья Логинов</a></em></p>
<hr/>
<p><em>Какой редактор или IDE вы используете?</em></p>
<p>PhpStorm, до этого был NetBeans, а до него Notepad++ с плагинами.</p>
<p><em>Что применяете для мониторинга производительности приложений?</em></p>
<p>Обычно Zabbix с доработками, изредка какой нибудь внутренний продукт компании</p>
<p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
<p>Кастомные решения в виде bash скриптов, настройки окружения, логов и прочего.</p>
<p><em>Какие инструменты отладки используете?</em></p>
<p>Xdebug.</p>
<p><em>Что используете для тестирования?</em></p>
<p>PHPUnit (+ Code Coverage).</p>
<p><em>С каким веб-фреймворком работаете?</em></p>
<p>Сейчас с Laravel, до этого были Zend, Kohana, Codeigniter.</p>
<p><em>Какие серверы и базы данных применяете?</em></p>
<p>Тут все зависит от требований к проекту, для некоторых подходит VPS с SqLite, другим продукты AWS требуются. Но в большинстве случаев это VDS и MySQL(MariaDB) или PostgreSQL.</p>
<p><em>Какие инструменты виртуализации предпочитаете?</em></p>
<p>Уже давно не работал с системами виртуализации, сейчас только контейнеризация в виде Docker с Kubernetes.</p>
<p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
<p>Vim.</p>
<hr/>
<p>Пожалуйста, напишите в комментариях, какими инструментами в повседневной работе с PHP-кодом пользуетесь вы.</p></div><div class=""><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-lg)" class="m_4081bf90 mantine-Group-root"><div class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:var(--mantine-spacing-xs);color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-user "><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0"></path><path d="M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path></svg></div><p style="margin-inline-end:var(--mantine-spacing-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дмитрий Дементий</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">6 лет назад</p></div><div style="align-items:center" class="m_8bffd616 mantine-Flex-root __m__-_R_5dirddmiub_"><a style="display:inline-flex" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/chto-ispolzuyut-php-programmisty-kakie-ide-i-redaktory-sredstva-otladki-testirovaniya-i-virtualizatsii-vostrebovany-professionalami/votes"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:var(--mantine-spacing-xs);color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-thumb-up "><path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3"></path></svg></div></a><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">9</p></div></div></div><div style="background-color:var(--mantine-color-indigo-light);border:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding:var(--mantine-spacing-xl)" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Читайте также:</p><ul style="margin-inline-start:var(--mantine-spacing-lg)" class="m_abbac491 mantine-List-root"><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/stoit-li-uchit-javascript-perspektivy-situatsiya-na-rynke-truda-mneniya-ekspertov">Язык программирования JavaScript: где его используют и почему он популярен</a></span></div></li><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/zachem-izuchat-php-reyting-perspektivy-sfery-primeneniya">Язык программирования PHP: рейтинг, сферы применения, прогнозы экспертов</a></span></div></li><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/environment">Среды разработки: какие они бывают и чем отличаются друг от друга</a></span></div></li></ul></div><div style="margin-block:var(--mantine-spacing-xl)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div></div><div></div></div><style data-mantine-styles="inline">.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:100%;--col-max-width:100%;}@media(min-width: 48em){.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}@media(min-width: 62em){.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:33.333333333333336%;--col-max-width:33.333333333333336%;}}</style><div class="m_96bdd299 mantine-Grid-col __m__-_R_lmiub_ mantine-visible-from-md"><div style="background-color:var(--mantine-color-indigo-light);border:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-bottom:var(--mantine-spacing-xl);padding:var(--mantine-spacing-xl);width:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div style="margin-bottom:var(--mantine-spacing-md)" class="m_4451eb3a mantine-Center-root" data-inline="true"><p style="font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Категории</p></div><ul class="m_abbac491 mantine-List-root"><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Мотивация">Мотивация</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Истории успеха">Истории успеха</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Дневник студента">Дневник студента</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Код">Код</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Карьера">Карьера</button></span></div></li></ul></div><div style="justify-content:end;margin-top:0rem;position:sticky;top:calc(5rem * var(--mantine-scale))" class="m_8bffd616 mantine-Flex-root __m__-_R_5dlmiub_"><div tabindex="0" style="cursor:pointer"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses_web_development?promo_name=program_category&promo_position=blog_post&promo_creative=card&promo_type=card"><div style="background-color:var(--mantine-color-default);border:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);padding-inline:var(--mantine-spacing-xl);padding-top:var(--mantine-spacing-xl);padding-bottom:var(--mantine-spacing-xs);width:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div class="m_4451eb3a mantine-Center-root" data-inline="true"><p style="font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Курсы по веб-разработке</p></div><img class="m_9e117634 mantine-Image-root" src="/vite/assets/development-BVihs_d5.png"/><p style="margin-bottom:var(--mantine-spacing-xs);text-align:right" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></a></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">Хекслет</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">О нас</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/testimonials">Отзывы</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://b2b.hexlet.io" role="button">Корпоративное обучение</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/blog">Блог</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/qna">Вопросы и ответы</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/glossary">Глоссарий</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io" data-target="_blank" role="button">Справка</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Карта сайта</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Направления</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_data_analytics">Аналитика
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend_development">Бэкенд
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_programming">Программирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Тестирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_front_end_dev">Фронтенд
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Профессии</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/go">Go-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/java">Java-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python">Python-разработчик </a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/data-analytics">Аналитик данных</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/qa-engineer">Инженер по ручному тестированию</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php">РНР-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Фронтенд-разработчик</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Навыки</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python-django-developer">Django</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/docker">Docker</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php-laravel-developer">Laravel</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/postman">Postman</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-developer">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-rest-api">REST API в Node.js</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/spring-boot">Spring Boot</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/typescript">Typescript</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Telegram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://t.me/hexlet_ru"><span class="bi bi-telegram"></span>
</a></li>
<li>
<a aria-label="Youtube" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.youtube.com/user/HexletUniversity"><span class="bi bi-youtube"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:8%20800%20100%2022%2047">8 800 100 22 47</a>
<span class="d-block opacity-50 small">бесплатно по РФ</span>
</li>
<li>
<a class="link-light text-decoration-none" href="tel:%2B7%20495%20085%2021%2062">+7 495 085 21 62</a>
<span class="d-block opacity-50 small">бесплатно по Москве</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<div class="small mb-3">Образовательные услуги оказываются на основании Л035-01298-77/01989008 от 14.03.2025</div>
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Правовая информация</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer">Оферта</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/license">Лицензия</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts">Контакты</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>ООО «<a href="/" class="text-decoration-none link-light">Хекслет Рус</a>»</div>
<div>108813 г. Москва, вн.тер.г. поселение Московский,</div>
<div>г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3</div>
<div>ОГРН 1217300010476</div>
<div>ИНН 7325174845</div>
</div>
<hr>
<div>АНО ДПО «<a href="/" class="text-decoration-none link-light">Учебный центр «Хекслет</a>»</div>
<div>119331 г. Москва, вн. тер. г. муниципальный округ</div>
<div>Ломоносовский, пр-кт Вернадского, д. 29</div>
<div>ОГРН 1247700712390</div>
<div>ИНН 7736364948</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-CdBlNCiQ.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-nkZBEvfU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DbyKWoR_.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-V011pkdv.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-XR8Qr8kR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dist-GCHh59xr.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-HJ6VK0D3.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-KSp6QbZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-l6ipYlLR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-jMQ_Cf4f.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v67327c56f0bb4ef8b305cae61679db8f1769101564043" integrity="sha512-rdcWY47ByXd76cbCFzznIcEaCN71jqkWBBqlwhF1SY7KubdLKZiEGeP7AyieKZlGP9hbY/MhGrwXzJC/HulNyg==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>