Шпаргалка по PHP
Удобный для поиска и печати справочник по PHP 8.3+ — синтаксис, строки, массивы, функции, классы, перечисления, атрибуты и современные возможности. Бесплатно.
Основы и типы
10declare(strict_types=1);
Включить строгую проверку скалярных типов
$x = 1;
Переменные начинаются со знака доллара
const MAX = 100;
Константа времени компиляции
gettype($x)
Получить тип значения
(int) $x
Привести к целому
is_int($x)
Помощник проверки типа (is_string, ...)
int|string $x
Объявление union-типа
?string $x
Nullable-тип (string или null)
$a ?? 'default'
Оператор слияния с null
$a ??= 'default'
Присвоить только если null
Строки
11"Hello $name"
Двойные кавычки интерполируют переменные
'literal $x'
Одинарные кавычки буквальны
$a . $b
Конкатенация строк
strlen($s)
Длина строки в байтах
str_contains($s, 'a')
Проверить наличие подстроки
str_starts_with($s, 'a')
Проверить префикс
substr($s, 0, 3)
Извлечь часть строки
str_replace('a', 'b', $s)
Заменить все вхождения
explode(',', $s)
Разбить в массив
sprintf('%05.2f', $n)
Форматированный вывод строки
trim($s)
Убрать пробелы по краям
Массивы
11$a = [1, 2, 3];
Литерал индексированного массива
$a = ['k' => 'v'];
Ассоциативный массив
array_map(fn($x) => $x * 2, $a)
Преобразовать каждый элемент
array_filter($a, fn($x) => $x > 0)
Оставить подходящие элементы
array_reduce($a, $fn, 0)
Свести к одному значению
in_array($v, $a, true)
Строгая проверка значения
array_keys($a)
Получить все ключи
array_merge($a, $b)
Слить массивы
[...$a, ...$b]
Распаковать/слить массивы
count($a)
Количество элементов
[$x, $y] = $a;
Деструктуризация массива
Функции
9function f(int $a): int {}
Типизированные параметры и возврат
function f(int $a = 1) {}
Значение параметра по умолчанию
function f(int ...$nums) {}
Вариативные параметры
f(...$args)
Распаковка аргументов
f(name: 'Sam', age: 30)
Именованные аргументы
$fn = fn($x) => $x + 1;
Стрелочная функция (авто-захват области)
function () use ($x) {}
Замыкание, захватывающее переменную
$fn = strlen(...);
Синтаксис callable первого класса
function f(): never {}
Никогда не возвращает (throws или exit)
Управление потоком
9if ($a) {} elseif ($b) {} else {}
Условные ветви
$a ? $b : $c
Тернарное выражение
$a ?: $b
Короткий тернарный (запасное ложное значение)
match ($x) { 1, 2 => 'a', default => 'b' }
Строгий match на основе выражений
switch ($x) { case 1: break; }
Нестрогое многовариантное ветвление
foreach ($a as $k => $v) {}
Перебор ключей и значений
for ($i = 0; $i < 10; $i++) {}
Цикл со счётчиком
while ($cond) {}
Цикл, пока условие истинно
break / continue
Выйти или пропустить итерацию цикла
Классы и ООП
10class A extends B implements C {}
Наследование и интерфейсы
public function __construct(private int $id) {}
Продвижение свойств в конструкторе
public readonly string $name;
Неизменяемое после инициализации
public function f(): static {}
Вернуть позднесвязанный тип
static::create()
Позднее статическое связывание
$obj?->method()
Null-безопасный вызов метода
abstract class A {}
Нельзя инстанцировать напрямую
trait T {} use T;
Переиспользуемый горизонтальный код
$obj instanceof A
Проверка типа во время выполнения
A::class
Строка полного имени класса
Перечисления
9enum Status { case Active; case Draft; }
Чистое перечисление
enum Status: string { case A = 'a'; }
Backed-перечисление (string/int)
Status::Active
Ссылка на случай перечисления
Status::from('a')
Создать из backing-значения
Status::tryFrom('x')
Возвращает null, если недопустимо
Status::cases()
Массив всех случаев
$status->value
Backing-значение случая
$status->name
Имя случая
enum E { public function label() {} }
Перечисления могут иметь методы
Обработка ошибок
9try {} catch (Throwable $e) {}
Перехватить ошибки и исключения
catch (TypeError | ValueError $e)
Перехватить несколько типов
catch (Exception)
Перехват без захвата (без переменной)
finally {}
Всегда выполняется после try/catch
throw new RuntimeException('x')
Выбросить исключение
throw $e;
Повторно выбросить перехваченное исключение
$x = $v ?? throw new Error();
Выбросить как выражение
$e->getMessage()
Прочитать сообщение об ошибке
$e->getPrevious()
Получить связанное исключение
Атрибуты и современное
9#[Attribute] class Route {}
Объявить пользовательский атрибут
#[Route('/home')]
Применить атрибут к цели
new ReflectionClass($x)
Исследовать класс через рефлексию
$ref->getAttributes()
Прочитать объявленные атрибуты
json_encode($data)
Сериализовать в JSON
json_decode($s, true)
Декодировать JSON в массив
array_is_list($a)
true, если ключи 0..n по порядку
str_word_count($s)
Подсчитать слова в строке
$obj::class
Имя класса из экземпляра
Нет записей, соответствующих «:q».
Нужна помощь?
Возникла проблема с этим инструментом? Сообщите нам.