Нові можливості

Ядро PHP

Типізовані властивості

Властивості класу підтримують оголошення типів.

Loading...

У наведеному прикладі вище показано, що $user->id можна присвоїти лише значення типу int, коли як $user->name - Виключно значення типу string.

Стрілочні функції

Стрілочні функції - це скорочений запис визначення функцій з неявною прив'язкою батьківської області видимості за значенням.

Loading...

Обмежена коваріація типу, що повертається, і контраваріантність типу аргументу

Наступний код тепер працюватиме:

Loading...

Повна підтримка варіантності доступна лише під час використання автозавантаження. Всередині одного файлу можуть бути лише нециклічні посилання, оскільки всі класи повинні бути визначені перед тим, як на них посилатися.

Присвоює оператор об'єднання з null

Loading...

Розпакування всередині масивів

Loading...

Розділювач у числових літералах

Тепер у числових літералах між знаками можуть бути символи підкреслення.

Loading...

Слабкі посилання

Слабкі посилання дозволяють програмісту зберегти посилання на об'єкт, яка не завадить збирачеві сміття видалити цей об'єкт.

Обработка исключений из метода__toString()

Викидання винятків із методу __toString() тепер дозволено. Раніше це призводило до фатальної помилки. Існуючі фатальні помилки, що відловлюються, при перетворенні об'єкта в рядок будуть доступні у вигляді винятків класу Error

CURL

Крім звичайних імен файлів, клас CURLFile тепер підтримує потокові обгортки, якщо модуль зібрано з версією libcurl >= 7.56.0.

Фільтрування

Фильтр**FILTER_VALIDATE_FLOAT** тепер підтримує параметри min_rangeиmax_range, з тим же змістом, що і для FILTER_VALIDATE_INT

FFI

FFI - новий модуль, який пропонує простий спосіб виклику вбудованих функцій, доступу до вбудованих змінних, а також створювати або звертатися до структур даних у бібліотеках мовою Сі.

GD

Добавлена константа**IMG_FILTER_SCATTER**для применения рассеивающегося фильтра к изображениям.

Хешування

Добавлен хешcrc32cвикористовує поліном Кастанолі. Ця реалізація алгоритму CRC32 використовується системами зберігання, такими як iSCSI, SCTP, Btrfs та ext4.

Багатобайтові рядки

Добавлена функцияmb_str_split()яка виконує те ж саме, що і str_split()але працює з кодовими точками, а не з байтами.

OPcache

Добавлена поддержкапопереднього завантаження коду

Регулярні вирази (сумісні з Perl)

Функції preg_replace_callback() і preg_replace_callback_array() тепер приймають додатковий аргумент flags з підтримкою прапорів PREG_OFFSET_CAPTURE і PREG_UNMATCHED_AS_NULL. Він вплине на формат масиву значень, що збіглися, що передається в callback-функцію.

PDO

Ім'я користувача та пароль тепер можна вказати як частину DSN для драйверів mysql, mssql, sybase, dblib, firebird та oci. Раніше підтримка цього була лише драйвера pgsql. Якщо ім'я користувача/пароль вказано і в конструкторі і DSN, то конструктор матиме пріоритет.

Також тепер можна екранувати знаки запитань у SQL-запитах, щоб вони не сприймалися як іменовані параметри. Використання ?? відправить один знак питання до бази даних, і, наприклад, у разі використання PostgreSQL, буде використано оператора перевірки існування ключа в JSON (?

PDO_OCI

Для данного драйвера теперь доступен методPDOStatement::getColumnMeta()

PDO_SQLite

Вираз PDOStatement::getAttribute(PDO::SQLITE_ATTR_READONLY_STATEMENT) дозволяє перевірити, чи доступний підготовлений запит лише читання, тобто. чи не змінює він базу даних.

PDO::setAttribute(PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES, true) дозволяє використовувати розширені коди результату SQLite3 PDOStatement::errorInfo()

SQLite3

Добавлен метод**SQLite3::lastExtendedErrorCode()**для получения последнего расширенного кода результата.

Добавлен методSQLite3::enableExtendedResultCodes($enable = true), який змусить метод SQLite3::lastErrorCode() повертати розширені коди результатів.

Стандартне

strip_tags() з масивом імен тегів

Функцияstrip_tags() тепер також приймає масив дозволених тегів: замість strip_tags($str, '<a><p>') тепер можна написати strip_tags($str, ['a', 'p'])

Серіалізація об'єктів

Додано новий механізм серіалізації об'єктів, що використовує два нових магічних методи: __serializeи__unserialize

Loading...

Новий механізм серіалізації замінює інтерфейс Serializable, який у майбутньому буде оголошено застарілим.

Функції злиття масивів без аргументів

Функції array_merge() і array_merge_recursive() тепер можуть викликатись без будь-яких аргументів, і тоді вони повернуть порожній масив. Це корисно у поєднанні з оператором розширення, наприклад, array_merge(...$arrays)

Функцияproc_open()

proc_open() тепер приймає масив замість рядка для виконання команди. У цьому випадку процес буде відкритий безпосередньо (без командної оболонки), а PHP екранує будь-який аргумент.

Loading...

Функцияproc_open() тепер підтримує дескриптори redirectиnull

Loading...

argon2i(d) без libargon

Функцияpassword_hash() тепер підтримує варіанти хешування argon2i та argon2id з модуля sodium, коли PHP зібраний без libargon.