PHP — самый «живучий» язык программирования. Который год ему пророчат скорую гибель, но он по-прежнему один из самых популярных. В 2020 году в индексе TIOBE язык PHP занял 8 место, опережая Swift, Ruby и Objective-C.
И раз PHP ещё рано списывать со счетов, разберёмся — где его используют, зачем нужен PHP и что это вообще такое.
Особенности языка PHP
Эти особенности определяют то, как PHP выполняет задачи, общается с сайтами и приложениями и кто его может менять (спойлер — все).
PHP — скриптовый (сценарный) язык. На таких языках пишут сценарии или скрипты — программы, которые автоматизируют небольшие рутинные задачи. Иначе их попросту пришлось бы выполнять вручную.
Как работает PHP, объясняют на канале сообщества веб-разработчиков WebShakeRU
Зачем нужны скрипты
- Помогают избежать ошибок. И экономят время пользователя — можно изменить программу и не бояться, что всё остальное перестанет работать и вся система рассыпется. Если вдруг в скрипте обнаружится ошибка, то при его выполнении вы увидите её в результате. При этом сайт останется работоспособным.
- Позволяют легко реализовать кроссплатформенность. Одни и те же сценарии без проблем выполняют браузеры в разных операционных системах и на разных устройствах.
Выполнение сценария также называют его интерпретацией, а сам PHP — интерпретатором.
Аналогия, которая поможет лучше представить работу интерпретатора:
Есть файл, где половина текста на русском, а половина — на английском. Задача — перевести весь текст на русский. Точно так же и обработчик смотрит .php файл, который состоит из HTML (русский) и php-кода (английский, его надо обрабатывать, «переводить»)
PHP — интерпретируемый язык. Раз PHP — интерпретатор, это даёт много плюсов:
- не нужно освобождать выделенную память или закрывать файлы по окончании работы с ними — всю рутинную работу сделает интерпретатор;
- отладка программ и обнаружение ошибок упрощаются — интерпретатор полностью контролирует этот процесс;
- сервер не «зависает» при неправильной работе приложения.
PHP — серверный язык. Всё работа происходит на удалённом веб-сервере. Открываете сайт — на сервер посылается запрос, выполняет заданные действия, отдаёт результат и завершается.
Что такое веб-сервер
Веб-сервер — это и про железо, и про программное обеспечение.
- с точки зрения железа, это компьютер, который хранит ресурсы сайта (HTML-документы, CSS-стили, JavaScript-файлы) и доставляет их на устройство (браузер) пользователя. Обычно он подключен к интернету и доступен через доменное имя.
Mozilla.org, youtube.com, shop.reg.ru — всё это доменные имена. - с точки зрения ПО, это HTTP-сервер — та часть ПО, которая понимает урлы (веб-адреса) и HTTP — протокол, который использует ваш браузер для просмотра веб-страниц.
Когда браузеру нужен файл, размещённый на веб-сервере, он запрашивает его через HTTP. Когда запрос достигает веб-сервера (железо), сервер HTTP (ПО) передает запрашиваемый документ обратно, тоже через HTTP. HTTP-ответ, как правило, содержит в себе HTML-страницу, изображение или обычный файл любого формата.
Это значит то, что на устройстве язык может быть вообще не установлен. Компьютер, ноутбук, смартфон могут PHP не понимать и быть c ним совершенно не знакомы. А сайт или приложение при этом запускается и стабильно работает.
Браузер тоже значения не имеет — программа на PHP успешно функционирует с любого.
Схема работы веб-сервера от сайта Lectureswww.readthedocs.io
PHP — язык с динамической типизацией. Это значит, что типы переменных определяются во время выполнения программы, разные типы можно использовать вместе, а неявные преобразования выполняются автоматически.
Статистическая vs динамическая типизация
Языки программирования бывают со статической и динамической типизацией.
- статическая — переменная определена жёстко и не может быть изменена. Переменная или параметр будут принимать, а функция — возвращать значения только этого типа и никак иначе.
- динамическая — переменная не определена и может быть одновременно числом, строкой, массивом, объектом — чем угодно. Одной переменной можно присвоить число, затем массив и объект — и язык программирования это разрешит.
PHP — язык с открытым исходным кодом. Дополнять и улучшать язык PHP, исправлять уязвимости и ошибки, добавлять новые функции и использовать его в собственных разработках может любой желающий.
Зачем придумали PHP
PHP изобрёл в 1994 году датский программист Расмус Лердорф. Тогда это был ещё не полноценный язык программирования, а всего лишь набор скриптов, который позволил Лердорфу сделать первое онлайн-резюме в виде HTML-страницы.
PHP расшифровывается как Personal Home Page — и отсылает к тому, чем язык был изначально — инструментом для разработки персональных веб-страниц
В то время создавать сайты можно было только так и не штудировать при этом тома по программированию.
Сейчас PHP поддерживает компания Zend Technologies: в 1997 году она выпустила третью версию языка и активно развивают его до сих пор.
В итоге проект разросся до такой степени, что получил собственный синтаксис, много новых функций и признание в среде разработчиков.
Эволюция версий
Прежде чем стать одним из самых популярных языков программирования, PHP прошёл долгий путь. Проследим, как он изменился от первой версии к последней.
PHP 1.0-2.0 — 1994. Ранние версии были «сырыми». Первая и вторая модификации обладали базовой функциональностью сегодняшнего PHP. Она включала в себя переменные в стиле Perl — языка для работы с текстом, который и лёг в основу PHP, автоматическую интерпретацию форм, когда по приходу формы язык автоматически создаёт переменные, и возможность встраиваться в HTML-код.
Синтаксис имел много общего с Perl, хотя и был намного проще.
Второй версией PHP, которая получила название PHP/FI 2.0, пользовались 50 тысяч доменов — около 1% всех доменов в интернете
PHP 3.0 — 1997. Третья версия, по сравнению с предыдущими, шагнула далеко вперёд, и определила облик PHP, сделав язык таким, каким мы его знаем.
Израильские программисты Зеев Сураски и Энди Гутманс, которые тогда присоединились к проекту, решили переписать код заново, потому что PHP/FI 2.0 был очень ограниченным.
Одна из сильнейших сторон PHP 3.0 — возможность расширения ядра, которая привлекла к языку много сторонних разработчиков, желающих добавить в PHP свои модули. Это и стало ключом к успеху.
К концу 1998 года количество пользователей PHP исчислялось десятками тысяч. Третья версия уже заняла заняла 10% веб-серверов интернета, включая тех, что находились под управлением Windows 95, 98, NT и Macintosh. Её установили уже на семи тысячах доменов
PHP 4.0 — 1998. Переработка ядра — основная задача, которую поставили перед собой разработчики после выхода PHP 3.0. Эффективность приложений, написанных на PHP, была далека от идеала — нужно было что-то с этим делать. Новый движок Zend Engine решил проблему и значительно увеличил производительность PHP.
PHP 5.0 — 2004. Пятая версия получила обновлённое ядро — Zend Engine 2 и переработанные функции объектно-ориентированного программирования, которые стали во многом схожи с моделью, используемой в Java. А скорость кода повысилась на 10–20%.
PHP 6.0 — 2006. Шестую версию пропустили. В неё хотели встроить поддержку Unicode — стандарта кодирования, включающего в себя знаки почти всех письменных языков мира. Но релиз так и не состоялся. Вот почему:
«PHP 6 был амбициозным, но отстойным. Вот почему мы занялись PHP 7, в процессе пропустив шестую версию»
Vilson Duka, один из разработчиков
PHP 7.0 — 2015. Самая быстрая версия языка, работающая без статической типизации — она есть только в параметрах функции. Добавили новые операторы, возможность указывать тип возвращаемых из функции данных и контроль передаваемых типов для данных.
Как развивался PHP с момента возникновения: основные вехи. Видео от Питера Кокота
PHP продолжает развиваться. Сейчас тестируют восьмую версию, которую планирую выпустить в 2021-2022 годах.
Словарик
Модуль — законченный фрагмент программы, оформленный в виде отдельного файла с исходным кодом.
Оператор — элемент языка, задающий полное описание действия, которое необходимо выполнить. По сути, это последовательность «инструкций», которая помогает программе совершать команду или набор команд.
Объектно-ориентированное программирование (ООП) — методология программирования, она основана на представлении программы в виде совокупности объектов, каждый из которых — экземпляр определённого класса, а классы в свою очередь образуют иерархию наследования.
Чем хорош PHP
Вот основные преимущества PHP, благодаря которым он имеет армию поклонников по всему миру и по-прежнему живёт и процветает.
Простой синтаксис. По своей структуре PHP подобен С. Некоторые элементы перекочевали из Perl. А чтобы написать простейший скрипт, не понадобятся переменные и модули — достаточно операторов PHP.
Пример кода от онлайн-школы Skillbox, выводящего надпись «Hello, World» на PHP, вставленного в HTML
Богатая экосистема. PHP поддерживает много библиотек, фреймворков и баз данных.
YII, Laravel, Symfony, CodeIgniter, Phalcon, Slim, ZendFramework, CakePHP, Aura, Fat-free — далеко не полный список фреймворков, с которыми работает PHP
PHP поддерживает все известные базы данных — MySQL, PostgreSQL, SQLite, MS SQL, Oracle, dBase и др.
Список библиотек, которые поддерживают PHP
Лёгкость освоения. Не нужно устанавливать специальные компиляторы — хватит простейшего хостинга, даже бесплатного, и блокнота. Даже новички смогут освоить язык за одну-две недели.
Подробная документация и много форумов, где можно найти решение определённых задач.
Если вы начинающий разработчик, вам подойдёт курс «PHP-разработчик. Базовый уровень» от SkillBox, на котором вы изучите основы, синтаксис PHP и сможете сразу использовать полученные знания на практике
За что ругают PHP
Но не лишён PHP и существенных недостатков, за которые его принято критиковать.
Много багов. У гибкости и простоты языка есть и обратная сторона: написать чистый и качественный код сложно, допустить ошибку легко, а найти её почти нереально — это можно сделать только после запуска программы. Из-за этого у PHP очень много багов — намного больше, чем у остальных. Отсюда же и многочисленные уязвимости, через которые можно залезть в базы данных пользователей или что-то поломать на сайте.
Смешанный код. Исходный код — это смесь из двух языков, самого PHP и HTML, в который он встраивается. Это не проблема для маленьких отдельных фрагментов, но если речь идёт о большом многостраничном сайте, то разобраться, где вы сейчас находитесь, или отыскать необходимый кусок кода, довольно затруднительно.
Любые переменные в любом месте. В PHP можно просто поставить знак «$» в любой части кода. Конечно, это упрощает жизнь — берёте переменную и делаете с ней что хотите. Но потом проблемы неизбежны. Присвоили переменной не тот тип — и всё пошло не так. При этом всё работает, но неправильно. Можно голову сломать, думая, что не так, но так и не выяснить, в чём же дело. Другие языки, Java или C#, таких вольностей попросту не допускают и дают за них по рукам, требуя переменную объявлять заранее и сразу указывать тип.
Не работает в одиночку. От самого по себе PHP толку мало — чтобы пользоваться языком, нужно знать как минимум HTML, а лучше ещё и CSS. JavaScript тоже не помешает.
Отсутствие единообразия. Нет чёткой системы в названиях функций стандартной библиотеки.
В некоторых есть сокращения, в некоторых нет (call_user_func vs. create_function)
В некоторых есть подчёркивание, в некоторых нет (isset vs. is_null)
Обозначение str иногда бывает в названиях функций для работы со строками, иногда нет
Низкая скорость. PHP — не самый производительный язык. Его конкурент Javascript — быстрее.
Для чего нужен PHP
Веб-разработка — это единственное назначение PHP. На нём нельзя написать приложения, язык не используют в мобильной разработке — только веб. Но эта область огромна.
Вот что можно сделать на PHP:
- Отдельные модули. PHP-код можно встраивать в HTML-страницы, а можно сохранить отдельным файлом. В этом случае мы получаем мини-модули, каждый из которых отвечает за что-то одно.
Этими модулями могут быть шапка сайта, подвал, меню или блок с отзывами о товаре.
Многие страницы портала Yahoo! созданы на PHP
- CMS и движки сайтов. Модульные возможности PHP способствовали тому, что большинство современных систем управления контентом на сайтах написаны на PHP.
WordPress, Drupal, Joomla, MediaWiki, OpenCart, phpMyAdmin написаны на PHP
- Форму для сбора данных и системы авторизации. Достаточно сообщить языку, что взять, из какого поля и по какому адресу отправить, а всё остальное интерпретатор сделает самостоятельно.
- Динамические страницы. PHP-скрипт, который в зависимости от URL показывает разный контент.
- Сессии и куки. Они нужны, чтобы хранить данные о пользователях при переходе между страницами. И это тоже механизм PHP, который можно реализовать через функции session_start().
Освойте PHP c нуля и станьте экспертом в нём на курсе «PHP-разработчик с нуля до PRO» от Skillbox. Вы научитесь создавать сайты и программы и работать с базами данных
Будущее PHP: что говорят эксперты
Вот что говорят о PHP программисты со стажем.
Илья Харченко, главный редактор The MASCC
«Есть умирающие языки, типа COBOL и FORTRAN. Есть традиционные языки, на которых работает, например, Microsoft — C# и JavaScript. Есть современные языки, пик возможностей которых ещё только ожидается — Kotlin, Crystal, Rust и Swift.
PHP сложно отнести к какому-то конкретному виду. Он точно не умирает, его нельзя назвать молодым, а из-за постоянного совершенствования его возможности и функционал только растут, из-за чего он будет популярен на протяжении ближайших лет десяти. Сложно предсказать, что будет с ним ещё через десять лет. Даже если он вдруг по каким-то причинам потеряет популярность, то к тому моменту на нём будут написаны миллиарды строк кода, требующих обслуживания»
Максим Жук, инженер-программист практики фронтенд компании «Рексофт»
«PHP остаётся одним из самых востребованных языков разработки серверной части веб-приложений. Хотя последние годы его начали теснить Node Js и Python, а со стороны решений для больших компаний пальма первенства у Java и .Net, но даже суммарно они занимают меньший рынок, чем PHP»
Эдуард Козлов, сооснователь BrainForce
«PHP продолжает находиться в топе языков, то немного опускаясь вниз, то опять поднимаясь вверх. Это классический язык, но он постоянно развивается: выходят новые версии языка, новые фреймворки и библиотеки. Если учесть распространение проектов на PHP в интернете, он будет развиваться и использоваться ещё много лет.
Рынок труда в 2020 году глобально изменился. Если раньше главным критерием наличия рабочего места был офис, то теперь из-за мировой пандемии даже компании с мировым именем стали использовать удалённую работу. Это открывает огромный потенциал для начинающих PHP-разработчиков. Если посмотреть вакансии на hh.ru, то они по-прежнему остаются в тренде!»
Подробнее о профессии PHP-программиста — читайте в этой статье
Стоит ли изучать PHP в 2021 году
Определённо стоит. PHP — популярный, простой в освоении язык для бэкенда, открывающий при этом большие возможности.
Будут ли веб-разработчики массово переходить на другие технологии — вопрос открытый. Сейчас, если вы приобретаете виртуальный хостинг, вам сразу включают интерпретатор PHP, потому что все его используют. А другие технологии типа Python или Node.js — нет, их нужно устанавливать отдельно.
Но ведь и веб — это не навсегда. Ещё лет 20, и понятие веб-сайта может устареть, потому что люди будут сидеть в приложениях и соцсетях.
Но ближайшие лет 5–10 спрос на язык точно будет. Он эволюционирует, скоро выйдет восьмая версия, да и отказаться от него не так-то просто — на PHP написано 80% интернета.
Так что можно спокойно изучать PHP и быть уверенным, что полученные навыки пригодятся. Особенно если вы хотите работать с «Вордпрессом», «Друпалом», «Джумлой» и другими известными системами управления сайтами. Они написаны на PHP, и все надстройки и дополнения — тоже.
Коротко о главном
Чтобы всё уложить в голове, держите шпаргалку:
- Что такое PHP — серверный сценарный язык с открытым исходным кодом.
- Зачем создали PHP — чтобы делать простые персональные страницы, а затем и полноценные сайты.
- Версии PHP — первая и вторая обладали базовой функциональностью PHP. Третья определила облик языка, в ней же появилась возможность расширения ядра, которая принесла PHP успех. Пятая прославилась за счёт обновлённого ядра и объектно-ориентированной модели, шестая не вышла, а седьмая — самая быстрая из предшествующих.
- Преимущества PHP — интерпретируемость, простой синтаксис, обширная экосистема, низкий порог входа.
- Недостатки PHP — грязный код, низкая скорость, проблемы с безопасностью, нестабильность системы.
- Что пишут на PHP — динамические страницы, сессии и куки, CMS и движки сайтов, формы авторизации и обратной связи, мини-модули, капчу, файловые менеджеры и текстовые редакторы.
Основатель образовательной платформы «Хекслет» (практические курсы по веб-разработке), программист Кирилл Мокевнин рекомендует изучать PHP в том случае, если вы хотите быстро войти в IT или устроиться в диджитал-студию
Если вас привлекает веб-разработка, PHP — ваш вариант: работая с PHP, вы освоите ещё HTML и CSS и попробуете себя в объектно-ориентированном программировании. А если не хотите ограничиваться веб-разработкой, присмотритесь к JavaScript или Python.