Некомпатибилни промени
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Некомпатибилни промени
Референца за `migration72.incompatible.php` со подобрена типографија и навигација.
Некомпатибилни промени
Спречи number_format() да враќа негативно нула
Претходно, беше можно number_format()
функцијата да врати -0. Иако ова е сосема валидно според IEEE 754 спецификацијата за пловечка точка, оваа чудност не беше посакувана за прикажување форматирани броеви во форма што може да ја прочитаат луѓето.
<?php
var_dump(number_format(-0.01)); // now outputs string(1) "0" instead of string(2) "-0"Конвертирај нумерички клучеви во објекти и кастинг на низи
Нумеричките клучеви сега се подобро обработени при кастинг на низи во објекти и објекти во низи (или од експлицитно кастинг или од settype()).
Ова значи дека цел (или низа со цел) клучевите од низи што се кастираат во објекти сега се достапни:
<?php
// array to object
$arr = [0 => 1];
$obj = (object) $arr;
var_dump(
$obj,
$obj->{'0'}, // now accessible
$obj->{0} // now accessible
);Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
object(stdClass)#1 (1) {
["0"]=> // string key now, rather than integer key
int(1)
}
int(1)
int(1)
И цел (или низа со цел) клучевите од објекти што се кастираат во низи сега се достапни:
<?php
// object to array
$obj = new class {
public function __construct()
{
$this->{0} = 1;
}
};
$arr = (array) $obj;
var_dump(
$arr,
$arr[0], // now accessible
$arr['0'] // now accessible
);Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
array(1) {
[0]=> // integer key now, rather than string key
int(1)
}
int(1)
int(1)
Забрани поминување null to get_class()
Претходно, поминување null на get_class() функцијата би го прикажала името на околната класа. Ова однесување сега е отстрането, каде што E_WARNING ќе биде прикажано наместо тоа. За да се постигне истото однесување како порано, аргументот треба едноставно да се изостави.
Предупреди при броење на небројливи типови
Еден E_WARNING сега ќе биде издадено при обид за
count() небројливи типови (ова го вклучува
sizeof() алијас функција).
<?php
var_dump(
count(null), // NULL is not countable
count(1), // integers are not countable
count('abc'), // strings are not countable
count(new stdClass), // objects not implementing the Countable interface are not countable
count([1,2]) // arrays are countable
);Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d int(0) int(1) int(1) int(1) int(2)
Премести ext/hash од ресурси во објекти
Како дел од долгорочната миграција од ресурси, Хеш екстензијата е ажурирана да користи објекти наместо ресурси. Промената треба да биде беспрекорна за PHP програмерите, освен каде што is_resource() извршени се проверки (кои ќе треба да се ажурираат за is_object() наместо).
Подобрете ги стандардните вредности за SSL/TLS
Направени се следните промени во стандардните вредности:
-
tls://сега стандардно користи TLSv1.0 или TLSv1.1 или TLSv1.2 -
ssl://новата функцијаtls:// -
STREAM_CRYPTO_METHOD_TLS_*константите стандардно користат TLSv1.0 или TLSv1.1 + TLSv1.2, наместо само TLSv1.0
gettype() враќање вредност на затворени ресурси
Претходно, користењето gettype() на затворен ресурс враќаше стринг од "unknown type". Сега, стринг од
"resource (closed)" ќе биде вратено.
is_object() and __PHP_Incomplete_Class
Претходно, користењето is_object() Пред PHP 7.2.0, користењето на
__PHP_Incomplete_Class на false. Сега, true ќе биде вратено.
Подигнете го нивото на грешка за недефинирани константи
Неограничените референци до недефинирани константи сега ќе генерираат
E_WARNING (наместо E_NOTICE). Во следната голема верзија на PHP, тие ќе генерираат
Грешка exceptions.
Поддршка за Windows
Официјално поддржаните, минимални верзии на Windows сега се Windows 7/Server 2008 R2.
Проверки на стандардните вредности на својствата на особините
Проверките за компатибилност на стандардните вредности на својствата на особините повеќе нема да вршат кастинг.
object за имиња на класи
На object Името претходно беше меко резервирано во PHP 7.0. Сега е тврдо резервирано, што го забранува неговото користење како име на класа, особина или интерфејс.
Поддршка за NetWare
Поддршката за NetWare сега е отстранета.
array_unique() with SORT_STRING
Додека array_unique() with SORT_STRING
претходно го копираше низот и ги отстрануваше не-уникатните елементи (без пакување на низот потоа), сега се гради нов низ со додавање на уникатните елементи. Ова може да резултира со различни нумерички индекси.
bcmod() промени со броеви со децимална точка
На bcmod() функцијата повеќе не ги скратува дробните броеви на цели броеви. Како таква, нејзиното однесување сега следи
fmod(), наместо % оператор. На пример bcmod('4', '3.5') сега враќа
0.5 наместо 1.
Функции за хеширање и некриптографски хешови
На hash_hmac(), hash_hmac_file(),
hash_pbkdf2()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во hash_init() (со
HASH_HMAC) функциите повеќе не прифаќаат некриптографски хешови.
json_decode() опции на функцијата
На json_decode() опција на функцијата,
JSON_OBJECT_AS_ARRAY, сега се користи ако вториот параметар (assoc) е nullсега ќе вратат
JSON_OBJECT_AS_ARRAY секогаш се игнорираше.
rand() and mt_rand() output
Секвенците генерирани од rand() and mt_rand() за одредено семе може да се разликуваат од PHP 7.1 на машини со 64 бита (поради поправање на грешка во модуларниот пристрасност во имплементацијата).
Отстранување на sql.safe_mode ini поставка
На sql.safe_mode ini поставката сега е отстранета.
, секвенците U+2028 и U+2029 сега се избегнуваат. date_parse() and date_parse_from_format()
На zone елемент од низата вратен од date_parse() and
date_parse_from_format() претставува секунди наместо минути сега, и неговиот знак е инвертиран. На пример -120
сега е 7200.
Дојдовни колачиња
Од PHP 7.2.34, names на дојдовните колачиња веќе не се url-декодираат од безбедносни причини.