Код
#статьи

PHP for dummies: как устроена экосистема языка и почему его стоит изучать в 2021 году

Каждый год ему предрекают скорую смерть и всё равно используют в коде 80% сайтов. Знакомимся с языком бэкенд-разработки PHP.

evgeniy kornilov / shutterstock

PHP — скриптовый язык общего назначения, который чаще всего используется в веб-разработке. Название языка — рекурсивный акроним PHP: Hypertext Preprocessor.

По данным w3techs.com (на октябрь 2021 года), код на PHP есть на 78% всех сайтов в интернете. У языка мощное профессиональное сообщество, которое ежегодно устраивает конференции и митапы по всему миру. Но вот парадокс: больше, чем PHP, разработчики ненавидят разве что только JavaScript.

Разберёмся, за что любят и ненавидят один из самых влиятельных языков программирования, а также расскажем, какие карьерные перспективы у PHP-разработчика в 2021 году.

Немного истории

В 1994 году программист Расмус Лердорф написал набор CGI-скриптов на языке С, чтобы отслеживать посещения своего резюме в интернете. Он дал им скромное название PHP/FI (personal homepage / form interpreter) — тогда они больше походили на фреймворк для работы с веб-формами, а не на полноценный язык.

Расмус Лердорф — отец PHP. Фото: официальный сайт Расмуса Лердорфа

В 1995 году Расмус выложил PHP/FI вместе с исходниками в открытый доступ. Синтаксис фреймворка напоминал С и Perl, поэтому разработчики, знакомые с языками, быстро его освоили и полюбили.

История современного PHP начинается в 1997 году. Тогда студенты Энди Гутманс и Зеев Сураски из Тель-Авива, которые использовали PHP/FI в своём университетском проекте, стали работать вместе с Расмусом над следующей версией PHP. В итоге появился совершенно новый язык — PHP 3.0 с поддержкой множества баз данных, API, ООП и расширяемым ядром. Кроме того, сторонние разработчики теперь могли писать модули для языка, поэтому его фанатская база стала расти ещё быстрее.

Для PHP 4.0 Гутманс и Сураски в 1999 году написали движок Zend Engine. Производительность скриптов выросла, появились более безопасные способы обработки пользовательских данных и поддержка новых серверов. В том же 1999 году Гутманс и Сураски основали компанию Zend Technologies, которая по сей день занимается поддержкой ядра PHP, релизит новые версии и сертифицирует разработчиков.

С того момента вышло ещё три версии языка:

  • В PHP 5 появились новые инструменты ООП и поддержка XML.
  • В PHP 7 заметно выросла производительность ядра. По данным Zend, скрипты на PHP 7 работают в два раза быстрее, чем скрипты на PHP 5.6.
  • В PHP 8, которая вышла в 2020 году, появилась JIT-компиляция, match (как case, только лаконичнее), null-безопасный оператор и другие новые операторы.

А вот версии PHP 6 никогда не было: в 2010 году создатели отменили релиз и залили все наработки в версию 5.4.

Где и как используют PHP

PHP — серверный язык, поэтому результатом выполнения его скриптов могут пользоваться разные системы. Он может как генерировать HTML-код, так и отдавать данные мобильным приложениям по API.

Например, когда вы открываете сайт и путешествуете по страницам, ваш браузер посылает сигналы на сервер. Браузер не знает, на каком языке написаны серверные приложения. Он лишь получает в ответ данные и показывает их в виде страниц. Любая другая система может обратиться к серверу и получить результат. Конечно, если на нём есть приложение, которое может отдавать данные в публичный канал.

Вот что обычно пишут на PHP:

  • бэкенд веб-сайтов;
  • бэкенд веб-приложений;
  • микросервисы;
  • внутренние веб-системы компаний.

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

Серверная часть многих крупных проектов написана на PHP или содержит скрипты на нём:

  • Wikipedia,
  • Facebook*,
  • «ВКонтакте»,
  • Avito,
  • Badoo,
  • «Банки.ру».

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

Чем хорош PHP

Почти 80% всех сайтов в интернете — нехилый показатель для языка, который иногда называют странным. Очевидно, веб-разработчикам есть за что ценить PHP.

Нестрогая типизация

На самом деле это и преимущество, и недостаток.

Представим каталог товаров на сайте, где для каждой позиции выводится цена. В PHP разработчику не нужно помнить, какой тип у цены: строковый или числовой. Мы просто выводим её, а об остальном заботится интерпретатор. В других языках нам пришлось бы приводить значения к строковому типу, прежде чем их вывести.

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

Для проекта на PHP легко найти хостинг

Писать код на домашнем компьютере — здорово, но если вы захотите показать проект миру, то нужно будет найти хостинг. Больше 90% компаний предлагают окружение, совместимое с PHP, поэтому выбор сервисов большой, а их средняя стоимость — низкая. А вот хостинг для Java или C# обойдётся примерно в 3–4 раза дороже, да и времени на поиск подходящего сервиса уйдёт куда больше.

PHP — «дружелюбный» язык

Для PHP пишут адаптеры — специальные библиотеки, через которые можно работать с внешними инструментами и технологиями. Поэтому PHP дружит практически с любыми базами данных, очередями и системами кэширования. Например, есть библиотеки для баз данных MySQL, Postgres и более экзотических Aerospike и Tarantool.

Другие преимущества PHP:

Простой синтаксис, который так же просто освоить. Просто сравните, сколько нужно написать кода, чтобы вывести «Hello World!» на PHP и на другом языке бэкенд-разработки — C#.

Пример на PHP:

echo "Hello World!";

Пример на C#:

using System;
namespace HelloWorldApplication {
class HelloWorld {
static void Main(string[] args) {
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}

Простая и понятная интеграция с HTML. Вместо того чтобы выводить HTML командами языка, как это пришлось бы делать в C, PHP просто встраивается в него. Код отделяется тегами <?php и ?>

<!DOCTYPE html>
<html>
    <head>
        <title>Пример</title>
    </head>
    <body>
        <?php
        echo "Hello world!";
        ?>
    </body>
</html>

Совместимость с различными платформами. PHP одинаково хорошо работает и на Windows, и на Linux. Интерпретатор языка можно установить на любую систему.

Универсальность. На PHP можно создавать одностраничные сайты, крупные сложные проекты и API-сервисы.

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

Приложение на PHP легко запустить. Для этого не нужно настраивать никаких веб-серверов. Достаточно скачать интерпретатор с официального сайта php.net и установить его.

Если PHP такой хороший, то за что его не любят?

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

Вот почему так происходит. Чтобы код на PHP заработал и сделал то, что мы задумали, интерпретатору нужно выполнить три операции:

  1. Проанализировать, правильно ли написан код.
  2. Превратить его в команды, понятные процессору (в так называемые опкоды).
  3. Выполнить команды.

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

Так PHP работает по умолчанию. Но за последние несколько лет программисты научились паре трюков, с которыми программы на PHP значительно ускорились. Например, можно заранее запускать процессы, которые обрабатывают код, и всегда держать их в готовности. Или анализировать скрипты и превращать их в опкоды один раз, а повторять операции только в том случае, если программист изменит скрипт.

В добавок ко всему в PHP 7 создатели языка оптимизировали каждый этап обработки скриптов. Поэтому они стали выполняться в два раза быстрее даже по умолчанию. А в PHP 8 появилась JIT-компиляция — с ней часть исходного кода сразу компилируется в исполняемый, минуя промежуточную обработку в виртуальной машине Zend.

Какие фреймворки есть у PHP

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

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

Ещё фреймворки помогают сохранять данные в сессии, читать параметры из адресной строки браузера, обрабатывать файлы в директории и подключаться к базам данных. У них есть методы для работы с файлами на диске, поэтому программисту не нужно писать функции для поиска и фильтрации. А ещё можно за пару шагов валидировать пользовательские данные (например, имя, email или комментарии в форме обратной связи) и обработать для дальнейшего использования.

Для PHP написано более 20 фреймворков, но чаще всего в энтерпрайзе используют следующие:

  • Laravel — самый популярный фреймворк PHP, создан в 2011 году;
  • Symfony — славится надёжностью и соответствием веб-стандартам;
  • Laminas (потомок Zend Framework) — позволяет подключать много сторонних библиотек, но немного сложнее остальных фреймворков;
  • Yii2 — считается самым быстрым фреймворком PHP;
  • CodeIgniter — один из самых простых в изучении.

Фреймворки различаются реализацией основных модулей, но во многом похожи: строятся по схожей архитектуре и даже содержат одинаковые библиотеки под капотом. На сайтах каждого вы найдёте подробные инструкции и документацию, где написано, как установить и использовать пакеты и библиотеки. Кроме того, у фреймворков в сети есть огромные комьюнити разработчиков и базы знаний.

Нужны ли сейчас PHP-разработчики и сколько они зарабатывают

Если подойти к обучению с умом, то устроиться на должность Junior PHP Developer довольно легко. Начинающие программисты, как правило, исправляют мелкие ошибки на сайтах или рефакторят код под новые задачи. Работы много — на запрос PHP junior сервис hh.ru выдал 562 вакансии:

На рынке не хватает сильных специалистов, поэтому через пару лет работы с PHP ваша ценность может вырасти в разы. Бизнесу нужны эксперты, которые умеют создавать сложные проекты и работать с десятками разных систем. Тем, кто на PHP «съел слона», рынок предлагает зарплаты в 3–4 раза больше, чем новичкам.

В целом уровень зарплаты зависит от скиллов разработчика и региона, в котором находится компания. Нижняя планка для джуна — 50 тысяч рублей. Но даже при минимальной зарплате от программиста требуется хорошо знать нюансы языка и уметь написать на нём скрипт без фреймворка. Разработчик с опытом от одного года может претендовать на зарплату в 100 тысяч рублей, а более опытные и владеющие смежными веб-технологиями — на 200 тысяч и более.

Подведём итоги:

  1. На PHP пишут бэкенд сайтов и приложений, микросервисы и внутренние веб-системы компаний. Почти 80% сайтов как минимум содержат код на этом языке, поэтому у PHP-разработчиков много работы.
  2. PHP работает с большинством внешних систем и библиотек, для него легко подобрать хостинг, он прост в освоении и запускается почти на всех платформах.
  3. Недостаток PHP в том, что для запуска кода процессору приходится выполнять цепочку операций: проанализировать код —> превратить его в команды —> выполнить. Каждая операция занимает время и отнимает ресурсы у процессора. В современных версиях языка эти проблемы научились обходить.
  4. В энтерпрайзе редко пишут на чистом PHP. У языка более 20 фреймворков, которые позволяют быстрее создавать приложения и сайты на основе готового каркаса.

PHP можно легко освоить на курсе «Профессия Fullstack-разработчик на PHP» в Skillbox. Чтобы учиться, не нужно специальных знаний — вы начнёте с основ, а к концу обучения создадите несколько полноценных проектов для портфолио.

* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook* и Instagram* на территории Российской Федерации по основаниям осуществления экстремистской деятельности».
Жизнь можно сделать лучше!
Освойте востребованную профессию, зарабатывайте больше и получайте от работы удовольствие.
Каталог возможностей
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована