Зміни, що ламають зворотну сумісність
Незважаючи на те, що більша частина існуючого коду PHP 5 повинна працювати без змін, все ж таки ознайомтеся з деякими змінами, які можуть позначитися на зворотній сумісності:
Ключі масиву не будуть перезаписані при визначенні масиву як властивості класу через літерал масиву
Раніше в масивах, задані як властивості класу зі змішаними явними та неявними ключами, елементи із явно заданими ключами могли мовчки перезаписуватись, якщо явний ключ перетинався з послідовним неявним ключем. Наприклад:
Loading...
Результат виконання наведеного прикладу в PHP 5.5:
array(2) {
[0]=>
string(3) "bar"
[1]=>
string(4) "quux"
}
Результат виконання наведеного прикладу в PHP 5.6:
array(3) {
[1]=>
string(3) "foo"
[2]=>
string(3) "bar"
[3]=>
string(4) "quux"
}
Суворість json_decode()
Тепер json_decode() відповідно до специфікації JSON відхиляє JSON літерали true
false
иnull
, задані не строго в нижньому регістрі, і відповідно встановлює json_last_error(). Раніше дані, що передаються в json_decode() і що містять виключно одне з цих значень у верхньому або змішаному регістрі приймалися.
Ця зміна вплине тільки у разі передачі в json_decode() некоректного JSON. У разі коректно сформованого JSON ніякого ефекту не буде.
Тепер потокові обгортки за промовчанням перевіряють сертифікати точок під час використання SSL/TLS
Всі клієнтські потоки, що шифруються, тепер за замовчуванням включають перевірку бенкетів. За замовчуванням сертифікат бенкету перевіряється пакетом OpenSSL CA. Зазвичай нічого не потрібно робити для з'єднання з серверами з правильним SSL-сертифікатом, оскільки OpenSSL налаштований так, що вже працює з хорошими CA-пакетами.
Стандартний CA пакет може бути перевизначений глобально за допомогою установки або openssl.cafile або openssl.capath рядків конфігурації, або ж на рівні кожного запиту, використовуючи опції контексту cafile
або capath
Хоча це і не рекомендується, але можна вимкнути перевірку сертифіката бенкету для запиту, встановивши verify_peer
опцию контекста в**false
, і можна вимкнути перевірку імені бенкету, встановивши verify_peer_name
вfalse
**
Тепер ресурси GMP є об'єктами
Тепер ресурси GMP є об'єктами. Функціональне API, реалізоване у модулі GMP, залишилося без змін. Існуючий код має запрацювати без змін, тільки якщо в ньому явно не використовувалися перевірки на ресурс is_resource() або щось подібне.
Теперь функцияMcrypt вимагає коректні ключі та IV
mcrypt_encrypt() mcrypt_decrypt() mcrypt_cbc() mcrypt_cfb() mcrypt_ecb() mcrypt_generic()иmcrypt_ofb() більше не приймають ключі і IV з некоректною довжиною, а режими блокового шифру, що вимагають IV, будуть завершуватися помилкою, якщо його не передати.
Завантаження файлів за допомогою cURL
Тепер завантаження з використанням синтаксису @file потребує встановлення CURLOPT_SAFE_UPLOAD в значение**false
**. Натомість слід використовувати CURLFile