Современный PHP — прекрасен и продуктивен

Почти 8 месяцев тому назад я пересел с проектов python/java на проект на php (мне предложили условия от которых было бы глупо отказываться), и я внезапно не ощутил боли и отчаяния, о которых проповедуют бывшие разработчики на ПХП. И вот что я думаю по этому поводу.

y2azn5ry0c1c_uxuouh-ymifbk0.jpeg

Что есть что


Для начала давайте расскажу мой опыт разработки и ощущения от инструментов на других языках, чтобы вы поняли с чем я сравниваю.

Python. Когда речь заходит о проектах на python (чаще всего на Django), мы получаем платформу, которая позволяет достаточно удобно и просто наращивать функционал, строить rest-api сервера, проводить шардирование системы и прочее. Логика работы фреймворка очень понятная и прямолинейная. Даже совсем зеленый разработчик может за пару часов набросать небольшой бложик с админкой. Плюс документация Django — одна из самых качественных, что я видел. К этому всему добавляется синтаксический сахар python, который помогает реализовывать определенные паттерны весьма элегантно. Если мы отходим от Django в сторону Tornado/aiohtpp/Twisted/Flask итд — то там начинается боль, ибо код в них писать гораздо неприятней, чем в Django.

Java. Если мы говорим про Java, например, Spring — то это системы, которые вызывают анальную боль тем, что заставляют тебя конфигурировать все, что можно конфигурировать. Порог вхождения очень высокий, огромное число нюансов, которое нужно держать в голове, плюс сам синтаксис Java заставляет тебя писать весьма объемные конструкции (правдиво для всех проектах на шестой Java). Но в качестве награды мы получаем весьма надежные и гибкие системы, которые могут пережить не один десяток программистов с весьма посредственными руками.

Что же касается PHP


Перед началом работы я прочитал книгу: Мэтт Зандра — PHP объекты, шаблоны и методики программирования, и убедился, что PHP в общем-то без особой боли позволяет реализовывать те или иные паттерны разработки. Т.е. в PHP можно писать правильный код, который будет не сильно отличаться от того, что мы получаем на Python/Java.

Zend Framework 1


Проект внутреннего сервиса меня встретил Zend Framework 1 на PHP 5.3. Скажу сразу, что многие решения на данной платформе выглядят весьма спорно, а язык PHP 5.3 имеет ограничения на установление типа возврата функций (методов), тем не менее, достаточно быстро понимаешь, где что лежит, как что прокидывается, а как что формируется.

Например, если мы рассматривает Zend Forms, то они практически под копирку делают то, что делают классические формы в Django. Синтаксис построения запросов в ДБ Zend DB Table — не вызывает какого-то негатива, и весьма очевидно работает.

Т.е. буквально за 2–3 дня я смог полноценно разбираться и стал писать код, который делал то, что от него требовалось вполне адекватным способом.

Symfony 3.4


Спустя 3 месяца меня перевели на другой проект на Symfony 3.4 и PHP 7.1 — и вот это просто бомба. У меня откровенно было ощущение, что мне дали в ручки Django, куда добавили надежность системы из Java.

  • Шаблонизатор Twig — полный клон Jinja от Django.
  • Doctrine ORM — аналог Hibernate
  • Аннотации Symfony — аналог декораторов из Python
  • Auto-wiring Symfony — даже работает очевидней, чем DI в Spring
  • Очевидные конфигурации секрьрности
  • Удобное построение rest-APi клиентов.
  • Удобное написание джоб для крона (в данном случае в симфонии они называются консольные команды)
  • Удобный дебагер и консольный помощник.

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

Единственный жирный минус — это недостаточная документация. Т.е. в документации указываются самые простые кейсы, а все что интересней, уже требует копания в исподниках symphony, ну и фреймворк на удивление не так популярен в Гугле, как бы того хотелось.

Поэтому, я абсолютно не понимания, почему люди плюют в сторону PHP, когда он работает и весьма клево.

А есть ли разница


Также хочу отметить такой момент, что после того, как ты поработал на 3–4 современных веб-фреймворках, тебе приходит понимание, что все везде работает схожим образом. Отличаются названия и реализации, а общие концепции 1 в 1. Поэтому, скажем, если вы работали на Django, то пересесть на php Symfony / .Net CORE MVC — можно без особо труда за пару месяцев.

P.s. если я все же слеп и глуп, прошу в комментарии.

© Habrahabr.ru