Объявление:
function sum(int $a, float $b, string $c, bool $d): float {
return $a + $b;
}
→ По умолчанию weak mode: '5' → 5, true → 1.
→ Strict mode (файл целиком):
declare(strict_types=1); // ДО всех импортов
⚠️ strict_types=1 работает только для вызовов из этого файла, не для вызываемых функций.
🛑 Null coalescing operator ??
$username = isset($_GET['user']) ? $_GET['user'] : 'guest';
Стало:
$username = $_GET['user'] ?? 'guest';
→ Проверяет isset(), а не !empty() → 0, '0', false — валидны.
<=>Для сравнения (в usort, array_multisort):
usort($users, fn($a, $b) => $a['age'] <=> $b['age']);
// Возвращает -1, 0, 1 — как callback в usort
→ Работает со строками, числами, массивами.
Exception → для пользовательских ошибок,Error (наследует Throwable) → для фатальных ошибок (например, call to undefined method),catch (Throwable $e) ловит всё.
try {
callUndefined(); // Error
} catch (Throwable $e) { // ловит и Error, и Exception
die('Упс');
}
mysql_* функции — полностью выпилены,ereg_* — удалены (уже deprecated в 5.3),$php_errormsg — заменён на error_get_last().→ При апгрейде с 5.6 → 7.0 — обязательно прогоняй через php -l и статический анализ.