Вы читаете предварительную версию v0.1. API могут измениться.
~ 1 мин чтенияОбновлено 2026-10-29

PHP, необходимый для изучения Elang

Этот урок объясняет синтаксис, используемый в примерах фреймворка. Это целевое введение, а не замена полного руководства PHP. Небольшие фрагменты можно запускать в файле practice.php командой php practice.php.

Переменные и строки

Переменные PHP начинаются с $. Точка с запятой завершает инструкцию. Оператор точки соединяет строки:

<?php
declare(strict_types=1);
$name = 'Ada';
echo 'Hello, '.$name.'!';

Ожидаемый вывод: Hello, Ada!. Текст в кавычках — строка. 42 — целое число, а true — логическое значение. Типы важны при чтении JSON или объявлении типизированного параметра функции.

Массивы

Массив может содержать список значений или именованные поля:

$tags = ['php', 'elang'];
$post = ['title' => 'A small beginning', 'published' => true];
echo $post['title'];

Оператор => связывает ключ со значением. Ответы JSON Elang часто начинаются как массивы PHP. JSON — текстовый формат, передаваемый по HTTP; это не то же самое, что массив PHP в памяти.

Функции и возвращаемые значения

Функция объединяет переиспользуемое поведение. Типы параметров и возвращаемого значения описывают, что она принимает и возвращает:

function greeting(string $name): string
{
    return 'Hello, '.$name.'!';
}
echo greeting('Ada');

return передаёт значение вызывающему коду. echo непосредственно выводит данные. В обработчике Elang возвращайте ответ вместо самостоятельного вывода, чтобы ядро могло корректно установить коды статуса и заголовки.

Анонимные и стрелочные функции

Маршрут может принимать анонимную функцию:

$router->get('/hello', function () {
    return ['message' => 'Hello'];
});

Стрелочная функция — краткая форма выражения:

$router->get('/hello', fn () => ['message' => 'Hello']);

Эти примеры предполагают одинаковый ответ. Функция выполняется, когда соответствующий запрос достигает обработчика, а не просто потому, что маршрут зарегистрирован.

Классы и объекты

Класс описывает объект. new создаёт экземпляр; -> обращается к методу или свойству экземпляра:

final class Greeter
{
    public function greet(string $name): string
    {
        return 'Hello, '.$name.'!';
    }
}
$greeter = new Greeter();
echo $greeter->greet('Ada');

Контроллер — класс для обработки запросов. Сервис — класс с переиспользуемой ответственностью. Явное название этой ответственности упрощает понимание кода по мере роста проекта.

Конструкторы и внедрение зависимостей

Конструктор получает зависимости, необходимые объекту:

final class WelcomeController
{
    public function __construct(private Greeter $greeter) {}
}

Краткий синтаксис private Greeter $greeter определяет и сохраняет свойство. Контейнер Elang может создать Greeter и передать его контроллеру. Это внедрение зависимостей; оно не требует глобального фасада или скрытой переменной.

Пространства имён и инструкции use

Полное имя класса включает его пространство имён:

namespace App\Controllers;
use Elang\Http\Response;

use позволяет файлу обращаться к существующему классу по более короткому имени. Он не скачивает и не устанавливает этот класс. Автозагрузчик Composer находит файл класса по отображению PSR-4 проекта.

В созданном приложении App\Controllers\HelloController должен находиться в app/Controllers/HelloController.php. Соблюдайте написание и регистр, особенно в Linux.

Статические вызовы и имена классов

Response::json(...) вызывает статический вспомогательный метод. HelloController::class возвращает полное имя класса строкой, чтобы маршрутизатор мог позднее запросить его у контейнера. Это не запускает контроллер немедленно.

Исключения

Исключение прерывает нормальное выполнение. Elang преобразует поддерживаемые HTTP-исключения и исключения валидации в ответы. Неожиданные исключения записываются в журнал и превращаются в безопасный ответ 500 в рабочей среде.

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

Быстрая самопроверка

Можете объяснить, почему маршрут возвращает массив, почему $name начинается со знака доллара, что означают -> и :: и почему инструкция use не устанавливает пакет? Если да, переходите к первому маршруту. Если термин незнаком, держите словарь открытым рядом с редактором.

Для более широкого знакомства с языком прочитайте официальный учебник PHP.

Нужна помощь?

Проверьте руководство по решению проблем, найдите термин в глоссарий, или пройдите полноценный проект доски задач.

Поиск по документации Elang

Начните вводить, чтобы найти следующий шаг.