Директива declare(strict_types=1) — это мощный инструмент в PHP, который обеспечивает строгую проверку типов данных. В этой статье мы подробно разберём, как правильно использовать strict_types, какие преимущества это даёт и как избежать распространённых ошибок.
Что такое strict_types?
strict_types=1 — это директива, которая включает строгую проверку типов для скалярных значений (int, float, string, bool) в пределах файла, где она объявлена.
<?php
declare(strict_types=1);
function sum(int $a, int $b): int {
return $a + $b;
}
sum("1", "2"); // Вызывает TypeError
Основные преимущества
- Предотвращение скрытых ошибок типизации
- Улучшение читаемости кода
- Более предсказуемое поведение
- Лучшая поддержка IDE
Практические примеры
Пример с Doctrine Entity
declare(strict_types=1);
#[ORM\Entity]
class Product {
#[ORM\Column(type: 'integer')]
private int $id;
public function setId(int $id): void {
$this->id = $id; // Ошибка при передаче строки
}
}
Работа с API
declare(strict_types=1);
$data = json_decode($response, true);
processOrder((int)$data['id']); // Явное приведение типа
Важные особенности
- Действует только в файле, где объявлен
- Не влияет на производительность
- Всегда проверяет объекты и массивы
- Разрешает null для nullable-типов
Рекомендации по внедрению
- Начинать с новых файлов
- Постепенно добавлять в существующий код
- Использовать вместе с phpstan/psalm
- Избегать глобального включения через php.ini
Заключение
Strict Types — это важный инструмент для создания надёжного и поддерживаемого кода на PHP. Его использование особенно важно в современных проектах и при работе с такими фреймворками, как Symfony и Laravel.
Добавить комментарий