Словарь PHP и фреймворка
Эти термины используются в учебном курсе Elang. Вам не нужно запоминать их до создания первой страницы; возвращайтесь к ним по мере необходимости.
PHP
PHP — язык программирования, на котором выполняется серверный код. Elang — фреймворк, написанный на PHP. Установка Elang не устанавливает новый язык программирования или отдельный интерпретатор.
Фреймворк
Фреймворк предоставляет соглашения и переиспользуемые инструменты для создания приложений. Elang координирует запросы, маршруты, сервисы и ответы. Возможности, модель данных и правила доступа по-прежнему определяет ваше приложение.
Серверная часть и интерфейс
Серверная часть выполняется на сервере. Она читает входные данные, применяет правила, обращается к данным и создаёт ответы. Интерфейс — то, что браузер отображает и с чем взаимодействует пользователь: структура HTML, оформление CSS и поведение JavaScript. Этот сайт использует Elang на сервере и обычные HTML, CSS и JavaScript в интерфейсе.
HTTP-запрос и ответ
Запрос просит сервер выполнить действие. Он включает метод, URL, заголовки и иногда тело. Ответ включает статус, заголовки и обычно тело. JSON API и HTML-страница используют один и тот же базовый обмен.
HTTP-метод и код статуса
GET читает ресурс; POST обычно отправляет данные или создаёт объект. PUT, PATCH и DELETE выражают другие изменения, определённые вашим API. Коды статуса сообщают результат: 200 — успех, 201 — создание, 404 — ресурс не найден, а 422 может указывать на ошибки валидации.
Маршрут
Маршрут сопоставляет метод и путь с обработчиком. /posts/{id} содержит именованный параметр. Именованный маршрут также имеет внутреннее имя, позволяющее генерировать URL без повторения пути по всему приложению. См. маршрутизацию.
Контроллер
Контроллер — класс, содержащий логику обработки запросов. Он может принимать внедряемые сервисы, читать запрос, проверять входные данные и возвращать ответ. По мере роста приложения он помогает сохранять файл маршрутов понятным.
Промежуточные обработчики
Middleware оборачивает следующий шаг обработки запроса. Он может проверять входные данные, отклонять запрос или изменять ответ. Порядок важен: middleware сессии должен подготовить сессию до того, как middleware CSRF проверит хранящийся в ней токен.
Сервис и внедрение зависимостей
Сервис — объект, выполняющий полезную задачу, например отображение шаблона или подключение к базе данных. Внедрение зависимостей передаёт этот объект через конструктор или параметр обработчика, вместо того чтобы заставлять код приложения самостоятельно создавать каждую зависимость.
Контейнер и singleton
Контейнер разрешает сервисы. Обычная привязка или конкретный класс без привязки создаёт новый объект. Привязка singleton повторно использует один объект внутри этого экземпляра приложения. Объект, зависящий от запроса, не должен случайно становиться долгоживущим общим сервисом.
Composer и пакет
Composer устанавливает PHP-библиотеки проекта и создаёт его автозагрузчик. Пакет — переиспользуемая библиотека, описанная в composer.json. Composer разрешает версии и записывает выбранные версии в composer.lock. Он не делает каждый пакет глобально доступным для всех PHP-проектов.
Пространство имён и автозагрузка
Пространство имён задаёт классу полное имя, например App\Controllers\HelloController. Отображение PSR-4 Composer связывает это имя с файлом. Инструкция use импортирует имя для удобства чтения; она не устанавливает отсутствующий пакет.
Переменная окружения и конфигурация
Значения, зависящие от окружения, включают учётные данные базы данных, канонический URL сайта и ключ приложения. Elang читает их через конфигурацию. Файл .env должен оставаться вне публичного каталога и системы контроля версий.
Валидация и экранирование
Валидация определяет, допустимы ли входные данные для конкретной цели. Экранирование безопасно кодирует вывод для определённого контекста. Заголовок может быть допустимым текстом и при этом содержать < или &; Twig экранирует эти символы при формировании HTML. Валидация и экранирование решают разные задачи.
База данных, построитель запросов и ORM
База данных хранит записи. Построитель запросов создаёт SQL через API, однако пользовательские значения всё равно нужно привязывать как параметры. ORM сопоставляет записи с объектами предметной области и добавляет другой набор абстракций. Сейчас Elang включает Doctrine DBAL и построитель запросов, а не встроенную ORM.
Миграция и транзакция
Миграция изменяет схему базы данных в версионированном файле. Транзакция объединяет совместимые операции, чтобы их можно было зафиксировать вместе или откатить после сбоя. Системы управления базами данных по-разному обрабатывают взаимодействие изменений схемы с транзакциями; DDL MySQL может выполнять неявную фиксацию.
Сессия и cookie
Сессия хранит серверные данные, связанные с браузером. Cookie переносит идентификатор сессии. Сессия полезна для временного состояния, но автоматически не устанавливает личность пользователя. Системе входа нужна дополнительная логика аутентификации и авторизации.
CSRF
Подделка межсайтового запроса заставляет браузер выполнить изменяющий состояние запрос с уже имеющимися cookie. Токен CSRF связывает отправку формы с нужной сессией. Он не защищает API без правил авторизации и не делает небезопасные данные допустимыми.
Аутентификация и авторизация
Аутентификация устанавливает, кто выполняет запрос. Авторизация определяет, что этому субъекту разрешено делать. Хеширование пароля — лишь одно из базовых средств системы аутентификации. Auth Starter предоставляет процессы работы с учётными записями, а каждое приложение по-прежнему должно определять проверки принадлежности и политики доступа.
Кеш и журнал
Кеш временно хранит результаты для повторного использования. Журнал фиксирует серверные события и ошибки для диагностики. Ни то ни другое не следует размещать в публичном каталоге. Не записывайте секреты в журнал и не предполагайте, что кешированное значение остаётся актуальным вечно.
CLI и корневой веб-каталог
CLI означает интерфейс командной строки: команды выполняются в терминале, например php elang doctor. Корневой веб-каталог — каталог, который веб-сервер открывает для доступа. Для Elang это должен быть public/, а исходный код, файлы vendor, конфигурация и хранилище остаются закрытыми.
Следующий шаг
Примените термины при создании первого маршрута или пройдите полный проект доски задач, чтобы увидеть, как несколько понятий работают вместе.