PHP (Hypertext Preprocessor) - серверный язык программирования, созданный специально для веб-разработки. В отличие от JavaScript, который работает в браузере, PHP выполняется на сервере: он обрабатывает запрос, формирует HTML и отправляет готовую страницу клиенту.
Каждый раз, когда вы заходите на сайт и видите динамическое содержимое - личный кабинет, ленту новостей, форму обратной связи - скорее всего, там работает PHP. По статистике W3Techs, PHP используется примерно на 77% всех сайтов, у которых известен серверный язык.
WordPress, Wikipedia, Facebook (в ранние годы), Drupal, Joomla - всё это PHP. Язык прост в освоении, хорошо документирован и поддерживается на любом хостинге, что делает его удобным стартом для веб-разработки.
PHP создал датско-канадский программист Расмус Лердорф (Rasmus Lerdorf) в 1994 году. Изначально это был набор Perl-скриптов для учёта посещаемости его личного сайта - аббревиатура расшифровывалась как «Personal Home Page Tools».
В 1995 году Лердорф выпустил исходный код и пригласил других разработчиков к участию. Зеев Сураски (Zeev Suraski) и Анди Гутманс (Andi Gutmans) переписали ядро с нуля, и в 1997 году вышел PHP 3 - уже как полноценный язык. Тогда же появилась новая расшифровка: «PHP: Hypertext Preprocessor».
PHP 5 (2004) принёс объектно-ориентированное программирование; PHP 7 (2015) удвоил производительность; PHP 8 (2020) добавил JIT-компилятор и именованные аргументы. Сегодня язык активно развивается.
Браузер отправляет запрос на сервер. Веб-сервер (Apache или Nginx) видит файл с расширением .php и передаёт его интерпретатору PHP. PHP выполняет код, формирует HTML-ответ и возвращает его веб-серверу. Сервер отправляет HTML браузеру.
Браузер никогда не видит исходный PHP-код - только результат его выполнения. Это принципиальное отличие от JavaScript, где код виден в инструментах разработчика. Логика, пароли к базам данных, бизнес-правила остаются на сервере.
Для локальной разработки устанавливают связку PHP + веб-сервер. Простейший способ - встроенный сервер PHP командой php -S localhost:8000, который автоматически обрабатывает .php-файлы.
PHP-код вставляется внутрь HTML с помощью тегов <?php и ?>. Всё, что написано вне этих тегов, выводится как есть. Это позволяет смешивать разметку и логику в одном файле.
Команда echo выводит текст в HTML-поток. Каждая инструкция завершается точкой с запятой - это обязательно. Если пропустить точку с запятой или закрывающий тег, PHP выдаст ошибку синтаксиса.
В PHP все переменные начинаются со знака $. Объявлять тип не нужно - он определяется автоматически при присваивании. Имя переменной может содержать буквы, цифры и знак подчёркивания, но не может начинаться с цифры.
PHP поддерживает интерполяцию переменных в строках с двойными кавычками - переменная прямо внутри строки заменяется своим значением. Строки с одинарными кавычками этого не делают.
PHP поддерживает восемь базовых типов. Четыре скалярных: int (целые числа), float (числа с плавающей точкой), string (строки), bool (булевы значения). Два составных: array (массивы) и object (объекты). Два специальных: null и resource.
Тип переменной можно узнать функцией gettype() или проверить функциями вроде is_int(), is_string(). PHP выполняет автоматическое приведение типов - например, при сложении строки «5» и числа 3 получится число 8. Это удобно, но требует внимания.
Для точного сравнения с проверкой типа используют оператор === (три знака равенства). Обычное == сравнивает только значение и может давать неожиданные результаты при разных типах.
Синтаксис условий и циклов в PHP очень похож на C, Java и JavaScript. Условие записывается через if / elseif / else, циклы - через for, while, foreach.
Блоки кода выделяются фигурными скобками, как в большинстве C-подобных языков. Отступы в PHP не влияют на выполнение кода, но важны для читаемости.
В PHP массивы создаются функцией array() или сокращённым синтаксисом []. Массивы могут быть индексированными (числовые ключи) и ассоциативными (строковые ключи). Для перебора массива удобнее всего цикл foreach.
Оператор точки . - это конкатенация строк в PHP. Массивы в PHP - основа работы с данными: из базы данных данные приходят в виде массивов, конфигурации хранятся в массивах, параметры форм тоже.
Функции объявляются ключевым словом function. PHP имеет тысячи встроенных функций - для строк, массивов, математики, работы с датами и многого другого. Плюс можно определять свои.
Параметры функций могут иметь значения по умолчанию - тогда их необязательно передавать при вызове. Функция возвращает результат через return. Без return функция вернёт null.
Главная суперсила PHP - возможность смешивать код и разметку. Можно открывать и закрывать PHP-тег несколько раз в одном файле, перемежая его с HTML. Это позволяет строить динамические страницы очень гибко.
Короткий тег <?= - сокращение для <?php echo. Синтаксис «двоеточие вместо скобки» (if/endif, foreach/endforeach) удобен внутри HTML-шаблонов - его легче читать, когда между открывающим и закрывающим тегами много разметки.
Одна из главных задач PHP - обработка данных из форм. Браузер отправляет данные через метод GET (в URL) или POST (в теле запроса). PHP читает их через суперглобальные массивы $_GET и $_POST.
Важно всегда обрабатывать входные данные функцией htmlspecialchars(), прежде чем вывести их на страницу. Без этого злоумышленник может внедрить произвольный HTML или JavaScript - это называется XSS-атака.
PHP традиционно работает в связке с базой данных MySQL (или MariaDB). Для безопасного подключения и выполнения запросов используют расширение PDO (PHP Data Objects) или MySQLi. PDO предпочтительнее, потому что поддерживает разные базы данных.
Подготовленные запросы - обязательная практика. Никогда не вставляйте данные от пользователя прямо в SQL-строку: это открывает SQL-инъекцию. PDO автоматически экранирует параметры при использовании плейсхолдеров.
HTTP - протокол без состояния: каждый запрос независим. PHP решает это с помощью сессий. Функция session_start() запускает сессию; данные хранятся на сервере и доступны через суперглобальный массив $_SESSION.
session_start() нужно вызывать до любого вывода на страницу - иначе PHP выдаст ошибку «headers already sent». Куки (setcookie()) хранятся в браузере и подходят для менее чувствительных данных.
PHP поддерживает объектно-ориентированное программирование с версии 5. Классы объявляются ключевым словом class. Свойства и методы могут быть публичными (public), защищёнными (protected) или приватными (private).
Конструктор __construct вызывается автоматически при создании объекта через new. Метод $this внутри класса ссылается на текущий объект.
Composer - стандартный менеджер зависимостей для PHP, появившийся в 2012 году. Он скачивает пакеты из репозитория Packagist, управляет версиями и автоматически подключает файлы (autoload).
Подключение vendor/autoload.php автоматически загружает все установленные пакеты - не нужно прописывать отдельный require для каждого класса. Это аналог package.json в Node.js или requirements.txt в Python.
Фреймворки предоставляют готовую архитектуру, маршрутизацию, работу с базой данных и шаблонами. Три самых популярных:
Для быстрого старта подходит Laravel. Он хорошо документирован, имеет огромное сообщество и предоставляет всё необходимое «из коробки».
PHP традиционно силён в нескольких областях. WordPress - самая популярная CMS в мире - написана на PHP и поддерживает более 40% всех сайтов. Это означает, что огромное количество плагинов, тем и сайтов требует знания PHP для поддержки и развития.
Интернет-магазины: WooCommerce (надстройка над WordPress), Magento, OpenCart - всё это PHP. Корпоративные порталы, CRM-системы, образовательные платформы - PHP остаётся рабочей лошадкой веба.
Facebook разработал HHVM (виртуальная машина для PHP) и язык Hack - ответвление PHP с типизацией. Wikimedia (Wikipedia) продолжает использовать PHP. Язык стар, но живёт и развивается активно.
PHP 8 (2020) и его обновления принесли значимые улучшения. JIT-компилятор (Just-In-Time) позволяет компилировать горячий код прямо во время выполнения, ускоряя вычислительно-интенсивные задачи.
Именованные аргументы позволяют передавать параметры по имени: array_slice(array: $a, offset: 1, length: 3). Атрибуты (аналог аннотаций в Java) добавляют метаданные к классам и методам. Match-выражение - более мощная замена switch.
Fibers (PHP 8.1) - примитивы для кооперативного параллелизма, позволяющие писать асинхронный код без промисов и колбэков. Enum (перечисления), readonly-свойства, intersection types делают код безопаснее.
Самый простой способ - использовать встроенный веб-сервер PHP. Установите PHP с официального сайта php.net или через пакетный менеджер системы. Затем в папке с проектом выполните:
Для полноценной разработки (с MySQL) удобнее использовать готовые сборки: XAMPP (Windows/Mac/Linux), Laragon (Windows) или Herd (Mac/Linux). Они включают PHP, Apache/Nginx и MySQL в одном установщике.
Проверка версии: php -v. Актуальные версии PHP - 8.1, 8.2, 8.3. Рекомендуется использовать PHP 8.2+ для новых проектов.
PHP - серверный язык для веба, созданный Расмусом Лердорфом в 1994 году. Код выполняется на сервере и не попадает в браузер. Переменные начинаются с $, строки конкатенируются точкой ., блоки выделяются фигурными скобками.
Ключевые концепции: суперглобальные массивы $_POST и $_GET для данных форм, сессии ($_SESSION) для хранения состояния, PDO для безопасной работы с базой данных. Защита: htmlspecialchars() против XSS, подготовленные запросы против SQL-инъекций.
Экосистема PHP огромна: Composer для пакетов, Laravel для веб-приложений, WordPress занимает 40% интернета. PHP 8 - современный и быстрый язык, а не только «старый» вариант. Знание PHP открывает доступ к огромному рынку веб-разработки.
По сравнению с Python и Node.js у PHP есть свои сильные стороны и ограничения.
В чём PHP лучше: создан именно для веба - встроенная работа с формами, сессиями, заголовками и шаблонами; модель «один файл - одна страница» понятна новичкам. Хостинг с поддержкой PHP доступен везде и дёшево, деплой часто сводится к загрузке файлов по FTP. WordPress и другие CMS дают огромный рынок вакансий и готовых решений. Простой порог входа и предсказуемая среда выполнения. PHP 8 с JIT и современным синтаксисом заметно быстрее старых версий.
Недостатки: исторический багаж - неконсистентные имена функций, порядок аргументов; современный стиль (типизация, пространства имён) пришёл позже. Не предназначен для real-time с тысячами долгоживущих соединений - для чатов и игр Node.js подходит лучше. Слабее Python в области data science и машинного обучения. Репутация «устаревшего» языка мешает привлечению части разработчиков, хотя экосистема по-прежнему огромна.
Перетащи шаги в правильном порядке (сверху вниз):
Перетаскивай карточки внутри зоны.
1. Как начинаются все переменные в PHP?
2. Какой тег открывает PHP-блок внутри HTML?
3. Какой оператор используется для конкатенации строк?
Для каждого понятия выбери правильное описание:
1. Что нужно вызвать перед использованием $_SESSION?
2. Какой способ защищает от SQL-инъекций?
3. Какой цикл удобнее всего использовать для перебора массива?
Ответь на 8 вопросов. Для допуска нужно не менее 80% (6 из 8).
1. Кто создал PHP?
2. Где выполняется PHP-код?
3. Как правильно объявить переменную в PHP?
4. Как вывести текст в PHP?
5. Какой менеджер пакетов используется в PHP?
6. Что хранит суперглобальный массив $_SESSION?
7. Какой популярный PHP-фреймворк используется для веб-приложений?
8. Как называется короткий тег вывода значения в PHP?
Ниже - обобщённое сравнение трёх изученных языков программирования. Выбор зависит от задачи, команды и контекста.
| Язык | Преимущества | Недостатки |
|---|---|---|
| Python |
Data Science и ML (Machine Learning) — области анализа данных и машинного обучения. Python стал стандартом де-факто благодаря библиотекам: NumPy (быстрые матричные операции), Pandas (обработка таблиц), scikit-learn (классические ML-алгоритмы), TensorFlow и PyTorch (нейронные сети). Кейс: Netflix использует Python для рекомендательных алгоритмов; NASA — для анализа данных телескопов.
Читаемый синтаксис — код на Python часто читается почти как английский текст. Нет фигурных скобок и точек с запятой; отступы сами по себе задают структуру. Кейс: обучение программированию в школах и университетах по всему миру — Python №1 как первый язык (MIT, Stanford, Яндекс Лицей). Низкий порог входа — простейший рабочий скрипт умещается в одну строку: print("Hello"). Не нужно объявлять типы, писать main(), компилировать. Кейс: автоматизация рутины — скрипт для переименования 1000 файлов пишется за 10 минут.
Универсальность — Python применяется в веб-разработке (Django, FastAPI), автоматизации (Selenium, Playwright), DevOps (Ansible, скрипты CI/CD), кибербезопасности (Metasploit-модули), научных расчётах, геймдеве (Pygame). Один язык покрывает десятки ниш. Django и FastAPI — веб-фреймворки. Django: «батарейки в комплекте» — ORM, авторизация, панель администратора, шаблонизатор из коробки. Используется Instagram (на старте), Pinterest, Disqus. FastAPI: современный async-фреймворк для высоконагруженных API, автоматически генерирует документацию OpenAPI (Swagger). Используется в микросервисах и ML-бэкендах. |
GIL (Global Interpreter Lock) - глобальная блокировка интерпретатора: в каждый момент времени только один поток может выполнять байт-код Python, даже на многоядерном процессоре. Т.е. создание нескольких потоков (threading) не даёт реального параллелизма для вычислений - потоки конкурируют за одну блокировку. Решение: модуль multiprocessing (отдельные процессы без общего GIL) или asyncio для I/O-задач.
Почему уступает Node.js в real-time: Node.js изначально спроектирован под тысячи одновременных соединений через неблокирующий event loop - один поток обрабатывает все запросы, пока ждёт ответа от БД/сети. Python по умолчанию синхронный: каждый запрос блокирует выполнение до ответа. Asgi-серверы (uvicorn + FastAPI) частично решают это, но экосистема async в Python моложе и менее однородна, чем в Node.js. Также Python не работает в браузере (нужен отдельный JS для фронта), а производительность «чистого» интерпретируемого кода ниже скомпилированных языков (Go, Rust, C++). |
| Node.js |
Один язык (JS) на фронте и бэкенде — разработчик пишет JavaScript и в браузере, и на сервере. Нет переключения контекста между языками, можно переиспользовать код (валидацию форм, модели данных). Кейс: стартапы с небольшой командой — один fullstack-разработчик закрывает всё приложение на одном языке.
Высокая пропускная способность (throughput) — Node.js может обслуживать десятки тысяч одновременных соединений на одном ядре CPU. Это возможно за счёт неблокирующего I/O (Input/Output): пока сервер ждёт ответа от базы данных или файловой системы, он не «стоит», а обрабатывает другие запросы. Кейс: Walmart перешёл с Java на Node.js и выдержал Black Friday с 500 млн+ запросов без падений. Real-time и API — real-time означает обмен данными в режиме реального времени без перезагрузки страницы. Библиотека Socket.io строит двунаправленный канал между сервером и клиентом (WebSocket). Кейсы: онлайн-чаты (Slack изначально), совместное редактирование (Figma), live-уведомления, онлайн-игры, трекеры курьеров.
npm (Node Package Manager) — крупнейший в мире реестр пакетов: более 2,5 млн опубликованных библиотек. Любая задача — от парсинга CSV до отправки email — решается готовым пакетом за одну команду: npm install название. Альтернативы: yarn, pnpm — более быстрые менеджеры пакетов с тем же реестром.
Webpack и Vite — почему это преимущество Node.js, а не фронтенда? Потому что Webpack и Vite — это программы, которые запускаются именно в среде Node.js на компьютере разработчика или CI/CD-сервере. Без установленного Node.js они не работают вообще. То есть Node.js здесь выступает как платформа для инструментов разработки, а не только как веб-сервер. Webpack: читает исходный код (сотни JS-файлов, CSS, изображения, шрифты), «склеивает» их в один или несколько оптимизированных файлов-бандлов для браузера, минифицирует код (убирает пробелы и комментарии), заменяет импорты. Это Node.js-процесс, который может работать как dev-сервер с hot reload (мгновенной перезагрузкой при изменении файла). Vite: аналог Webpack, но использует нативные ES-модули браузера во время разработки — не собирает весь код заранее, а отдаёт файлы по требованию. Старт проекта занимает <1 секунды вместо 10–30 секунд у Webpack. Тоже Node.js-процесс. Таким образом, весь современный фронтенд-стек (React, Vue, Angular, TypeScript) зависит от Node.js как от рантайма: без него не запустить сборщик, не установить пакеты через npm, не выполнить скрипты из package.json. Это делает Node.js обязательным инструментом даже для тех, кто не пишет бэкенд.
SSR (Server-Side Rendering) через Next.js: страницы React рендерятся на Node.js-сервере и отправляются браузеру готовым HTML — это ускоряет первую загрузку и позволяет поисковикам индексировать контент (SEO). Кейс: Vercel, TikTok, Twitch используют Next.js. |
CPU-bound задачи - это операции, которые нагружают процессор непрерывными вычислениями: кодирование видео, сжатие данных, сложные математические расчёты, обработка изображений. В таких задачах нельзя «отпустить» event loop и ждать - нужно постоянно считать. Пока выполняется такая задача, Node.js не может обработать ни один другой запрос: весь сервер «замерзает».
Как имитируется многопоточность в Node.js:
Модель «страница = файл» - подход PHP, где каждый URL соответствует физическому файлу на сервере: /about → about.php, /contact → contact.php. Хостинг и браузер «понимают» это автоматически. В Node.js такой модели нет: нужно самостоятельно прописывать маршруты в коде (app.get('/about', ...)), настраивать деплой, обрабатывать 404. Это гибче, но требует больше кода и понимания.
|
| PHP |
Создан для веба «из коробки» — PHP изначально разрабатывался именно для генерации HTML-страниц на сервере. Встроена обработка форм ($_POST, $_GET), управление сессиями (session_start(), $_SESSION), работа с куками, загрузка файлов, отправка email через mail(). Не нужно устанавливать дополнительные библиотеки для базовых веб-задач — всё готово. Кейс: типичный сайт с формой обратной связи и авторизацией пишется без единого стороннего пакета.
Дешёвый хостинг везде — shared-хостинг с поддержкой PHP стоит от 100–300 рублей в месяц и доступен у тысяч провайдеров по всему миру. Для Node.js или Python часто нужен VPS (виртуальный сервер) — дороже и сложнее в настройке. Кейс: малый бизнес, студенческие проекты, клиентские сайты — PHP позволяет запустить сайт без DevOps-компетенций. WordPress и CMS — CMS (Content Management System), система управления контентом. WordPress написан на PHP и занимает ~43% всего интернета (по данным W3Techs). Это означает огромный рынок труда: разработка тем, плагинов, кастомизация. Другие PHP-CMS: Joomla, Drupal, Bitrix (популярен в России). Кейс: блоги, новостные сайты, интернет-магазины на WooCommerce — всё это PHP. Простой деплой — деплой означает публикацию (развёртывание) проекта на сервере. Для PHP достаточно скопировать файлы по FTP или через файловый менеджер хостинга — сервер начинает выполнять код немедленно, без сборки и перезапуска процессов. Для сравнения: Node.js требует настройки process manager ( pm2), reverse proxy (Nginx), управления переменными окружения.
PHP 8 — быстрый и современный — PHP 8 (2020) и 8.x привнесли: JIT-компилятор (Just-In-Time, компиляция кода прямо во время выполнения для ускорения), именованные аргументы, union types, enums, fibers (асинхронность), атрибуты (аналог аннотаций). По бенчмаркам PHP 8 быстрее PHP 5 в 2–3 раза. Современный фреймворк Laravel делает разработку на PHP сопоставимой по удобству с Ruby on Rails и Django. |
Историческая непоследовательность API - конкретные примеры:
В итоге код на PHP требует постоянного обращения к документации даже для опытных разработчиков. Современные фреймворки (Laravel) скрывают эти несоответствия, но под капотом они никуда не делись. |
В реальных проектах языки часто комбинируют: например, бэкенд на Node.js или Python, админка на Laravel, фронтенд на React. Понимание сильных и слабых сторон каждого помогает выбирать инструмент под задачу.
Что нужно сделать:
index.php;<?php;$;echo для вывода текста (минимум один раз);<html> или <!DOCTYPE html>;?>.Критерии проверки (100 баллов):
<?php — 20 балловecho — 25 баллов$имя) — 25 баллов<html> или DOCTYPE) — 20 балловМинимум для зачёта: 60 баллов.
Загрузи файл index.php