Зміни, що ламають зворотну сумісність

Незважаючи на те, що більша частина існуючого коду 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