PHP: Разработка микрофреймворка

Теория: Сервер

Встроенный сервер PHP

В PHP есть встроенный веб-сервер для локальной разработки. Он удобен тем, что запускается одной командой и сразу позволяет проверить, как приложение отвечает на HTTP-запросы.

Для учебных задач это отличный старт: не нужно поднимать отдельный Nginx или Apache, можно сосредоточиться на логике приложения.

Режим раздачи файлов

Самый простой сценарий: сервер отдает файлы из директории как есть.

php -S localhost:3000

Здесь корнем сайта становится текущая директория. Если в каталоге есть index.html, сервер вернет его по запросу к /.

Проверить ответ можно через curl:

curl http://localhost:3000/

Терминал покажет HTML как текст. Браузер этот же ответ отрисует как страницу.

Режим единой точки входа

В реальных приложениях чаще используют одну точку входа, например index.php. Тогда разные URL не обязаны соответствовать файлам ��а диске: путь приходит в приложение, а вы сами решаете, что вернуть.

Пример запуска:

php -S localhost:3000 index.php

Внутри index.php можно прочитать $_SERVER['REQUEST_URI'] и сделать простой роутинг:

<?php

function server(string $url): string
{
    if ('/' === $url) {
        return '<p>Welcome to PHP</p>';
    } else if ('/about' === $url) {
        return 'about company';
    } else if ('/server' === $url) {
        return print_r($_SERVER, true);
    }

    return 'not found';
}

echo server($_SERVER['REQUEST_URI']);

Что такое роутинг

Роутинг - это сопоставление URL и обработчика. Запрос пришел на /about - выполняется один код. Пришел на / - другой.

Сначала обычно делают простой вариант на if, а потом выносят маршруты в отдельную структуру или подключают роутер из фреймворка.

Откуда берутся данные запроса

В PHP есть суперглобальный массив $_SERVER. В нем лежат:

  • Путь запроса (REQUEST_URI).
  • Метод (REQUEST_METHOD).
  • Заголовки (HTTP_ACCEPT, HTTP_USER_AGENT и другие).
  • Служебные данные (DOCUMENT_ROOT, REMOTE_ADDR, REMOTE_PORT).

На практике $_SERVER - базовая точка, откуда читают входящие данные, если вы работаете без фреймворка.

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

В базовом случае достаточно сделать echo, и строка попадет в тело HTTP-ответа.

Если заголовки явно не заданы, PHP отправит стандартные. Их можно посмотреть так:

curl -I http://localhost:3000/

В ответе вы увидите, какие заголовки сервер выставил по умолчанию.

Особенность модели выполнения

Для такого режима важно помнить: PHP-скрипт выполняется заново на каждом запросе. Приложение не держит ваше состояние в памяти между запросами само по себе.

Это упрощает запуск и изоляцию запросов, но инициализация кода происходит каждый раз заново. На первых этапах обучения это даже плюс: поведение приложения легче отслеживать.

Итог

На этом шаге нам важны три вещи:

  • Уметь запускать встроенный сервер.
  • Читать входящие данные из $_SERVER.
  • Направлять запросы по URL через простой роутинг.

Этого уже достаточно, чтобы начать собирать свое веб-приложение и постепенно переходить к более устойчивой архитектуре.

Рекомендуемые программы

Дальше

Завершено

0 / 11

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845