Язык программирования РНР 7 — серверный язык, при помощи которого можно создавать Web-сайты, причем как небольшие лендинги, состоящие из одной страницы, так и гигантские системы, использующие сотни и тысячи серверов. Электронная энциклопедия Wikipedia, социальные сети Facebook, ’’ВКонтакте”, электронная площадка объявлений Avito созданы с использованием РНР.
Будучи одним из самых первых языков программирования, ориентированных на Web-разработку, РНР прошел длительный путь практически с самого начала зарождения Web. Поэтому в мире он остается одним из самых популярных и востребованных языков.
Достоинства и недостатки PHP 7
В основе популярности РНР лежат следующие достоинства.
- Ориентация на Web-разработку — РНР создавался, развивался и поддерживается как язык для создания Web-сайтов. Многие конструкции и решения в нем созданы для удобства работы в Web-среде.
- Кроссплатформенность — РНР перенесен на все основные операционные системы: можно разрабатывать сайт в Windows, Mac OS X, а эксплуатировать на Linux-сервере. Сложности переноса будут минимальны и нивелироваться языком.
- Бесплатность — РНР является разработкой из мира свободного программного обеспечения, не потребуется платить ни за сам язык, ни за большинство сопутствующих программ (редакторы, Web-серверы, базы данных). Вдобавок большинство программных продуктов, с которыми придется иметь дело, будут иметь доступный для изучения и модификации исходный код. Вложения могут потребоваться при аренде доменного имени и сервера для публикации сайта в Интернете. Однако изучать РНР можно, не вкладывая ни копейки.
- Низкий порог входа — изучить РНР и начать создавать на нем готовые приложения много проще, чем с использованием конкурирующих технологий (
.NET
,Python
,Ruby
,Go
). Изучение PHP не закрывает для разработчика другие технологии, в Web сам язык — значительная, но меньшая часть используемых технологий. Знания, приемы работы, сопутствующие технологии (Web-серверы, базы данных, библиотеки, вспомогательные языки) пригодятся и в любой другой экосистеме, отличной от РНР. При создании собственного бизнеса собрать команду PHP-разработчиков зачастую проще и дешевле всего.
По закону сохранения, любая вещь, обладающая хоть каким-либо достоинством, имеет недостатки. Ими обладает и РНР 7.
- Отсутствие лидера — многие технологии и языки имеют лидера, архитектора, который определяет облик технологии, задает вектор развития, принимает решение о том, что должно быть обязательно, а чего не будет никогда (Linux, Python, Ruby и т. п). В РНР лидера нет, многие решения и конструкции — это компромисс заинтересованных групп и исторически сложившихся реалий.
- Непоследовательный синтаксис — при изучении языка РНР, особенно старой части, основанной на функциях, можно заметить, что часть функций имеет префиксы array_, str_, часть не имеет. Параметры функций могут быть расположены не совсем логично и не так, как в другой функции этой же группы.
- РНР — уже довольно долго живущий язык. Когда язык только появляется, он довольно элегантный и внутренне согласованный. По мере жизненного цикла язык обрастает дополнительными ключевыми словами, артефактами, устаревшими конструкциями, которые вроде есть, работают, но которыми не рекомендуется пользоваться. У РНР была довольно бурная молодость, в ходе которой была отменена масса директив и приемов, которые на первый взгляд должны были облегчать разработку, а на практике оборачивались серьезными проблемами безопасности. Сам РНР, стартовавший как необъектно-ориентированный язык, в настоящий момент стал полноценным объектно-ориентированным языком. Однако в нем полно старых процедурных артефактов, которыми придется пользоваться.
- Сообщество PHP-разработчиков велико и разъединено, т. к. РНР — это одна из первых технологий для разработки Web-проектов, половина Интернета создана с его участием. В PHP-разработку одновременно было вовлечено огромное количество программистов по всему миру. Все это породило большое число самых разных подходов, фреймворков и не совместимых друг с другом экосистем. Более того, благодаря усилиям мощных и влиятельных социальных сетей (в первую очередь Facebook, '’ВКонтакте”) появились альтернативные реализации РНР. Это плохо, т. к. многие экосистемы внутри РНР не совместимы, а сообщество раздроблено и тратит силы на создание одних и тех же библиотек в рамках разных групп. Ситуация исправляется и при помощи PSR-стандартов. Разработчики договариваются о единых правилах и интерфейсах, обеспечивающих совместимость фреймворков, но этот процесс еще в начале пути, в то время как конкурирующие технологии (
.NET
,Ruby
) уже имеют единую платформу для всех фреймворков.
Структура РНР 7
Язык РНР 7 имеет ядро и расширения языка. Между ядром и расширениями довольно трудно провести границу, т. к. многие расширения давно включены в состав ядра или распространяются в виде скомпилированных бинарных библиотек и легко устанавливаются.
Есть и другая часть — код, созданный на РНР, который условно можно поделить на следующие типы:
- компоненты — библиотеки на РНР, которые собираются при помощи менеджера пакетов Composer;
- фреймворки — готовые сборки, зачастую из компонентов, при помощи которых можно создавать сайты любой степени сложности. В книге, к сожалению, мы их не касаемся, однако если вы выберите РНР 7 в качестве основного языка разработки, то не пройдете мимо них. На следующие РНР-фреймворки стоит обратить внимание:
Symfony
,Laravel, Zend
,Yii
. Всего их сотни, если не тысячи; - готовые приложения — готовые к использованию разработки на РНР. Это системы управления контентом (
Wordpress
,Drupal
), форумы (phpBB
), Web- интерфейсы управления базами данных (phpMyAdmin
,pgAdmin
).
Книга, которую вы держите в руках, познакомит вас с языком; описанные выше системы созданы с использованием языка РНР, но требуют отдельного изучения, и, к сожалению, их обсуждение выходит за рамки моего блога.
Сопутствующие технологии
При помощи РНР 7 можно быстро разрабатывать Web-сайты, однако современные реализации РНР — это не самая быстрая и эффективная часть сайта. Поэтому для запуска сайта потребуются дополнительное программное обеспечение и технологии.
- Web-сервер — программа, которая обеспечивает взаимодействие клиента и вашего приложения посредством протокола HTTP. На протяжении всей книги мы используем встроенный РНР-сервер, хотя для эксплуатации настоящего сайта потребуется Web-сервер
nginx
илиApache
. - Сервер базы данных — данные нужно где-то хранить. В книге довольно подробно рассматриваются две базы данных:
PostgreSQL
иRedis
. Однако это далеко не все базы данных, которые вам встретятся на практике, да и каждая из затронутых заслуживает отдельной книги. - Система контроля версий Git, которая служит для хранения истории разработки, резервного копирования, доставки кода на сервер, организации командной работы. Работаете ли вы в коллективе или в одиночку —
Git
в настоящий момент превратился в основной инструмент современного программиста, какой бы язык программирования не был выбран в качестве базового.
Этот список можно продолжать и продолжать. Однако на самом деле можно начать даже без этого — опираясь просто на язык РНР.