PHP 7.2: Головні нововведення
PHP 7.2 додає тип object, дозволяє прибирати підказки типів параметрів у перевизначеннях (без порушення LSP), розширює debugDumpParams() для емульованих PDO-запитів, підтягує LDAP EXOP і сімейство socket_addrinfo_*, а в поставку включає Sodium (libsodium) як сучасну базу для криптографії.
Mcrypt викидають із ядра (залишається в PECL); count() на «не тому, що треба» і get_class(null) починають голосно скаржитися. Міграція: прибрати mcrypt, пройтися по count(, виправити get_class, переглянути приведення масив/об’єкт із числовими ключами.
Зміст
- Тип
object - Розширення типів параметрів
- PDO
debugDumpParams() - LDAP EXOP
socket_addrinfo_*- Sodium
- Розширення та stdlib
- Рецепти
- Зворотна несумісність
- Deprecated
- Інше
Тип object
function acceptsAnyObject(object $x): void {}
Розширення типів параметрів
У дочірньому методі можна не повторювати type hint з інтерфейсу; звуження або несумісна зміна заборонені.
PDO debugDumpParams()
Показує повний SQL для емульованих prepares — зручно ловити помилки в динамічних запитах.
LDAP EXOP
ldap_exop*, ldap_parse_exop, константи на кшталт LDAP_EXOP_START_TLS.
socket_addrinfo_*
Резолв і з’єднання в стилі getaddrinfo для IPv4/IPv6.
Sodium
Розширення в комплекті PHP 7.2+; нові таємниці й AEAD — тут або в OpenSSL, не в mcrypt.
Розширення та stdlib
utf8_encode/decode у ядрі; mail/mb_send_mail з масивом заголовків; DBA+LMDB; зміни GD; session_module_name('user') → recoverable error.
Рецепти
if (is_array($x) || $x instanceof \Countable) {
$n = count($x);
}
$cls = is_object($obj) ? get_class($obj) : self::class;
(is_countable() — з 7.3.)
Зворотна несумісність
number_format()і рядок-0.- Узгоджений доступ до числових ключів після
(object)/(array)— див. migration72 incompatible. get_class(null)→ warning.count()/sizeof()на не-countable →E_WARNING.- Mcrypt не в ядрі — лише PECL; міграція на Sodium/OpenSSL.
Deprecated
__autoload, посилені bareword-константи, create_function, each(), рядковий assert, одноаргументний parse_str, read_exif_data, gmp_random, png2wbmp/jpeg2wbmp — повний список: migration72 deprecated.
Інше
Autoconf ≥ 2.64; спрощений --with-pdo-oci; прибрано --enable-gd-native-ttf; mcrypt → PECL.
Підсумок
Видаліть mcrypt, наведіть лад з count( і get_class(, потім спокійніше переходьте на 7.3 з JsonException та is_countable().