- PVSM.RU - https://www.pvsm.ru -

PHP гораздо лучше, чем вы думаете

Последнее время PHP гнобят все, кому не лень, даже довольно-таки разумные люди. Когда Jeff Atwood создал свой очередной пост [1], направленный против PHP, это заставило меня задуматься о хороших сторонах этого языка.

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

Прежде чем начинать говорить о достижениях PHP сообщества за последнее время, давайте посмотрим на некоторые интересные цифры: PHP используется как основной язык на 77,9% [2] среди всех сайтов, где язык платформы известен. WordPress используется в 16,6% [3] среди всех сайтов мира. Если вы посмотрите на топ 3 CMS, WordPress на первом месте с 54,3%, Joomla на втором с 9,2% и Drupal на третьем с 6,8%. Топ 3 продукта, все написаны на PHP.

Это не спроста: в PHP явно что-то сделано верно, не находите?

Давайте я вам рассскажу маленький секрет успеха PHP: не смотря на все изменения за последние годы, PHP все еще является наипростейшим языком для изучения не-техническими людьми; PHP позволяет создавать динамичные вебсайты быстрее, чем любая другая технология, позволяет поднимать сайты дешево и без заморочек. Вполне возможно, что PHP не самый лучший язык в мире с точки зрения проектирования, но он позволяет быстро достигать целей, и с этим не поспоришь.

PHP: Язык

В PHP 5.0 (вышедшем в 2004) ввели стабильную объектную модель… стоп стоп. Я же говорю о чем-то, что было почти 8 лет назад. Давайте-ка вернемся в настоящее.
В современном релизе PHP, 5.4, есть все плюшки, о которых вы могли бы мечтать, пользуясь современным веб языком: да, PHP поддерживает пространства имен; да, PHP поддерживает замыкания; да, PHP поддерживает типажи (traits).

На это ушло время, но PHP 5.4 включает в себя немного синтаксического сахара, который делает процесс разработки лучше: да, PHP поддерживает [] для обозначения массива; да, PHP поддерживает вызов метода на созданном объекте ((new Foo())->bar()); да, PHP поддерживает вызов элемента массива из произвольного выражения ($foo->bar()[1]).

В PHP учатся на своих ошибках: register_globals and magic_quotes убраны с потрохами.

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

Задача на будущее: как «обновить» все гайды по PHP в интернете? Какой лучший способ поддержки вебсокетов в PHP проекте?

PHP: Экосистема

Хороший язык — это круто, но отличная экосистема — это еще круче. И экосистема PHP очень сильно развилась за последние годы.

Git

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

Composer

Два года назад мне очень хотелось избавиться от страшного PEAR-хака, который я использовал в symfony 1 для поддержки плагинов. Мне хотелось заменить его на что-то, что могло управлять зависимостями на уровне проекта, а не иметь глобальный установщик как PEAR. Управление зависимостями — не простая задача, поэтому я попытался найти наилучший алгоритм для её решения. Я просмотрел все: от Perl до Ruby, от Debian до RedHat. Ни один не был удовлетворительным — кругом самопальные решения, которые просто работают… эмпирически. А потом я наткнулся на ZYpp [4]. Это было оно. В ZYpp используется SAT [5] анализатор для управления зависимостями. И теперь, благодаря колоссальной работе Nils Adermann [6] и Jordi Boggiano [7], у PHP есть один из лучших менеджеров зависимостей, Composer [8].

Да, у PHP сейчас лучший менеджер зависимостей из всех языков.

И благодаря Git, Composer и встроенному серверу PHP скачивать, устанавливать и тестировать PHP проекты еще не было так просто [9]!

Хотите попробовать Symfony (используя PHP 5.4)?

$ composer.phar create-project symfony/framework-standard-edition
$ cd framework-standard-edition
$ ./app/console server:run

Хотите попробовать Silex?

$ composer.phar create-project fabpot/silex-skeleton
$ cd silex-skeleton
$ php -S localhost:8888 -t web/

Не слышали о Composer? А он того стоит. Загляните на Packagist [10] — основной репозиторий для Composer: в нем уже находится более 1900 пакетов и они были установлены более миллиона раз меньше чем за 3 месяца.

Задача на будущее: внедрить Composer в следующую версию PHP?

Сотрудничество

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

phpBB, Drupal, ez Publish, Symfony, phpDoc, PHPUnit, Behat, Zikula, Propel, Doctrine, Midgard и многие другие имеют совместный код. Да, они «конкуренты», но они все поняли что интероперабельность — это круто. И Composer в этом большой помощник.

Задача на будущее: убедить еще больше проектов влиться в тренд?

Напоследок:

PHP, возможно, не лучший язык в мире, и я далеко не первый, кто пытается говорить о его плюсах, но PHP — это лучшая веб платформа… и точка.

P.S. Это перевод статьи PHP is much better than you think [11], написанной Fabien Potencier. Честно пытался отметить топик, как перевод, но так и не нашел где.

Автор: Inori


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/10929

Ссылки в тексте:

[1] пост: http://www.codinghorror.com/blog/2012/06/the-php-singularity.html

[2] 77,9%: http://w3techs.com/technologies/overview/programming_language/all

[3] 16,6%: http://w3techs.com/technologies/overview/content_management/all

[4] ZYpp: http://en.wikipedia.org/wiki/ZYpp

[5] SAT: http://en.wikipedia.org/wiki/Boolean_satisfiability_problem

[6] Nils Adermann: http://www.naderman.de/

[7] Jordi Boggiano: http://seld.be/

[8] Composer: http://getcomposer.org/

[9] так просто: https://twitter.com/fabpot/status/220254879459975169

[10] Packagist: http://packagist.org/packages/

[11] PHP is much better than you think: http://fabien.potencier.org/article/64/php-is-much-better-than-what-you-think