PHP 8.4 (релиз: ноябрь 2024)

Запрет изменения параметра внутри функции

🛡️ readonly для параметров

				
					function process(readonly string $input): void {
    $input = strtoupper($input); // ❌ CompileError
    echo strtoupper($input);     // ✅ чтение разрешено
}
				
			

→ Помогает избегать побочных эффектов.

Геттеры и сеттеры без boilerplate

📦 Property hooks (get/set)

				
					class User {
    public string $name {
        get => ucfirst($this->name);
        set => $this->name = trim($value);
    }
}
				
			

→ Замена ручным __get()/__set().
→ Работает только для public-свойств.

Создание объектов в const

🧪 new в константах класса

				
					class Config {
    const DB = new Database('localhost', 5432);
}
				
			

→ Объекты должны быть неизменяемыми (например, DateTimeImmutable).

Восьмеричные литералы только через 0o

🔄 Explicit octal notation

				
					$oct = 0o755; // ✅
$old = 0755;  // ❌ ParseError (раньше — работало)
				
			

→ Убирает путаницу с ведущим нулём.

Прочее

⚠️ Deprecated
DateTime::getLastErrors() → заменён на исключения,
filter_var(…, FILTER_VALIDATE_* без FILTER_NULL_ON_FAILURE) — устаревает.