object type hintЗачем: принимать любой объект, но не скаляры/массивы.
Пример
function persist(object $entity): void {
// $entity может быть User, Order — но не [], не 'string'
}
persist(new User()); // ✅
persist([]); // ❌ TypeError
🚫 Запрет на override констант в наследниках
Было (PHP 7.1):
class A { const C = 1; }
class B extends A { const C = 2; } // работало
Стало (PHP 7.2):
→ Fatal error: Cannot override previously defined const.
Решение: используй static::C + late static binding.
count(null) → Warning (раньше — 0, тихо),'string'[100] → Warning (раньше — "", тихо),foreach([] as $k => $v) с не-перебираемым → TypeError.→ Выявляет скрытые баги.
— Перегрузка абстрактных функций
— Объявлена устаревшей __autoload()
— Удалён mcrypt
— Добавлена возможность расширить тип аргумента в наследнике (Контравариантность):
class ArrayClass { public function foo(array $foo) {/* … */} } class EverythingClass extends ArrayClass { public function foo($foo) {/* … */} }