"Trailing commas in function and method calls are now allowed" means function parameters, example:
<?php
function my1() {
echo "xxxxxx\n";
}
function my2() {
echo "yyyyyy\n";
}
my1(),my2(); // PHP Parse error: syntax error
my1(,); // PHP Parse error: syntax error
my1(1,); my2(2,); // OK
?>Нови одлики
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Нови одлики
Референца за `migration73.new-features.php` со подобрена типографија и навигација.
Нови одлики
PHP јадро
Пофлексибилна синтакса за Heredoc и Nowdoc
Затворачкиот маркер за стринг документи повеќе не мора да биде проследен со точка и запирка или нов ред. Дополнително, затворачкиот маркер може да биде вовлечен, во кој случај вовлекувањето ќе биде отстрането од сите редови во документот.
Деструктурирањето на низи поддржува доделување референци
Деструктурирањето на низи сега поддржува доделување референци користејќи ја синтаксата
[&$a, [$b, &$c]] = $d. Истото се поддржува и за list().
Операторот Instanceof прифаќа литерали
instanceof сега дозволува литерали како прв операнд, во кој случај резултатот е секогаш false.
CompileError исклучок наместо некои грешки при компилација
Нов CompileError е додаден исклучок, од кој ParseError наследува. Мал број грешки при компилација сега ќе фрлат CompileError
наместо да генерира фатална грешка. Моментално ова влијае само на грешки при компилација што може да бидат фрлени од token_get_all() in
TOKEN_PARSE режим, но повеќе грешки може да бидат претворени во иднина.
Завршни запирки се дозволени во повици
Завршните запирки во повици на функции и методи сега се дозволени.
Поддршка за Argon2id
На --with-password-argon2[=dir] аргументот за конфигурација сега обезбедува поддршка за хешови Argon2i и Argon2id во
password_hash(), password_verify(),
password_get_info()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во
password_needs_rehash() функции. Лозинките може да се хешираат и верификуваат користејќи ги PASSWORD_ARGON2ID константа. Поддршка за Argon2i и Argon2id во --with-password-argon2[=dir]
функциите сега бараат PHP да биде поврзан со референтната библиотека libargon2 ≥ 20161029.
FastCGI менаџер на процеси
Додадени се нови опции за прилагодување на FPM логгирањето:
log_limit- Оваа глобална опција може да се користи за поставување на лимитот за лог за запишаната линија, што овозможува запишување пораки подолги од 1024 знаци без прекин. Исто така, поправа разни проблеми со прекини.
log_buffering- Оваа глобална опција овозможува експериментално логгирање без дополнително баферирање.
decorate_workers_output-
Оваа опција на пул овозможува да се оневозможи украсувањето на излезот за излезот на работниците кога
catch_workers_outputе овозможено.
BC Математички функции
bcscale() сега може да се користи и како гетер за добивање на моменталната скала во употреба.
Протокол за пристап до лесна директориумска услуга
Додадена е целосна поддршка за LDAP контроли во LDAP функциите за прашување и ldap_parse_result():
-
А
$controlsпараметарот за испраќање контроли до серверот во ldap_add(), ldap_mod_replace(), ldap_mod_add(), ldap_mod_del(), ldap_rename(), ldap_compare(), ldap_delete(), ldap_modify_batch(), ldap_search(), ldap_list() and ldap_read() е додадена. -
Излезниот параметар
$controlsза добивање контроли од серверот во ldap_parse_result() е додадена. -
Поддршка за
LDAP_OPT_SERVER_CONTROLSandLDAP_OPT_CLIENT_CONTROLSin ldap_get_option() and ldap_set_option() е поправен.
hans at loltek dot net
Целосна поддршка за мапирање и превиткување на случајот
Додадена е поддршка за целосно мапирање и превиткување на случајот. За разлика од едноставното мапирање на случајот, целосното мапирање на случајот може да ја промени должината на низата. На пример:
<?php
mb_strtoupper("Straße");
// Produces STRAßE on PHP 7.2
// Produces STRASSE on PHP 7.3
?>-
MB_CASE_LOWER(се користи за mb_strtolower()) -
MB_CASE_UPPER(се користи за mb_strtoupper()) -
MB_CASE_TITLE -
MB_CASE_FOLD -
MB_CASE_LOWER_SIMPLE -
MB_CASE_UPPER_SIMPLE -
MB_CASE_TITLE_SIMPLE -
MB_CASE_FOLD_SIMPLE(се користи за операции што не ги земаат предвид случајот)
Операциите со низи што не ги земаат предвид случајот користат превиткување на случајот
Операциите со низи што не ги земаат предвид случајот сега користат превиткување на случајот наместо мапирање на случајот при споредби. Ова значи дека повеќе знаци сега ќе се сметаат (независно од случајот) за еднакви.
MB_CASE_TITLE врши конверзија во насловна форма
mb_convert_case() with MB_CASE_TITLE
сега врши конверзија во насловна форма врз основа на изведените Unicode својства Cased и CaseIgnorable. Особено, ова исто така ја подобрува обработката на наводници и апострофи.
Поддршка за Unicode 11
На Повеќебајтни низи табелите со податоци се ажурирани за Unicode 11.
Поддршка за долги низи
На hans at loltek dot net сега правилно поддржува низи поголеми од 2GB.
Подобрувања на перформансите
Перформансите на Повеќебајтни низи екстензијата се значително подобрени насекаде. Најголемите подобрувања се во функциите за конверзија на случај.
Поддршка за именувани зафаќања
На mb_ereg_* функциите сега поддржуваат именувани зафаќања. Функциите за совпаѓање како mb_ereg() сега ќе враќаат именувани зафаќања и со нивниот број на група и со нивното име, слично на PCRE:
<?php
mb_ereg('(?<word>\w+)', '国', $matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>\k<> and \k'' нотации за повикување на именувани зафаќања во низата за замена:
<?php
mb_ereg_replace('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>\k<> and \k'' може да се користи и за нумерички референци, што исто така работи со броеви на групи поголеми од 9.
script.bat -h
Поддршка за completion_append_character and
completion_suppress_append опции е додадена во
readline_info()password_*()