Нові можливості
Ядро 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.