После годину дана развоја представљени издање програмског језика ПХП КСНУМКС. Нова грана укључује низ нових функција, као и неколико промена које нарушавају компатибилност.
Откуцана својства - својства класе сада могу укључивати декларације типа, на пример:
корисник класе {
публиц инт $ид;
јавни стринг $наме;
}
Скраћено синтакса за дефинисање функција “фн(параметер_лист) => екпр” са везивањем опсега по вредности. На пример, „фн($к) => $к + $и” је аналогно „$фн2 = фунцтион ($к) усе ($и) {ретурн $к + $и;}”);
Скраћеница оператора доделе "??=" која се може користити за дефинисање подразумеване вредности ("а ??= б" је слично као "а = а ?? б", ако је "а" дефинисана његова вредност се чува, а ако није дефинисана је додељена вредност "б" );
Ограничен прилика очување хијерархије наслеђивања типова у изведеним типовима повратка или могућност да се хијерархија оригиналних типова преокрене у изведеним типовима аргумената (коваријанса тип повратка и контраваријантност типа аргумента). Следеће конструкције сада могу да се користе у ПХП-у:
класа А {}
класа Б проширује А {}
класа Продуцент {
метод јавне функције(): А {}
}
цласс ЦхилдПродуцер проширује Продуцер {
метод јавне функције(): Б {}
}
Оператор за распакивање унутар низова „…$вар“, дозвољавајући извршити замену постојећих низова приликом дефинисања новог низа;
Прилика визуелно представљање великих бројева са граничницима у нумеричким литералима (1_000_000_00);
подршка слабе карике, који вам омогућавају да задржите референцу на објекат, али не блокирају сакупљач смећа да избрише придружени објекат;
Нови механизма серијализација објеката (комбинација Сериализабле и __слееп()/__вакеуп()), која је заменила интерфејс Сериализабле, који ће бити застарео;
// Враћа низ који садржи сва стања објекта;
јавна функција __сериализе(): низ;
// Враћа стање објекта из низа
јавна функција __унсериализе(арраи $дата): воид;
Дозвољено је избацивање изузетака из методе __тоСтринг();
Додата подршка за претходно учитавање кеша објектног кода. Додат параметар за подешавање опцацхе.прелоад, преко које можете навести ПХП скрипту која ће бити преведена и покренута када се сервер покрене. Ова скрипта може да учита опкод других датотека кроз њихово директно укључивање или коришћење функције опцацхе_цомпиле_филе();
Додата црц32ц функција у Хеш екстензију за израчунавање контролних сума коришћењем полинома Цастагноли;
Додата подршка функцији пассворд_хасх() за методе хеширања лозинке аргон2и и аргин2ид, у имплементацији библиотеке Натријума, ако је ПХП изграђен без либаргона;
Додата функција мб_стр_сплит(), слична стр_сплит(), али не ради са бајтовима већ са позицијама знакова у вишебајтном низу;
Функција стрип_тагс() сада има могућност да проследи низ са именима ознака, тј. уместо стрип_тагс($стр, ‘’) сада можете навести стрип_тагс($стр, [‘а’, ‘п’]);
проц_опен() омогућава да се операнди набрајају у низу, а не у стрингу за покретање, а такође обезбеђује преусмеравање нити и подршку за нулл дескриптор датотеке;
// Као 2>&1 у љусци
проц_опен($цмд, [1 => [‘цеви’, ‘в’], 2 => [‘преусмеравање’, 1]], $цеви);
// као 2>/дев/нулл или 2>нул у љусци
проц_опен($цмд, [1 => ['цев', 'в'], 2 => ['нулл']], $пипес);
Фиребирд/Интербасе, Рецоде и ВДДКС екстензије су искључене из основног пакета. Ове екстензије се сада дистрибуирају преко ПЕЦЛ-а;
Пребачен у категорију застарео функције као што су угнежђени тернарни оператори без заграда, приступ елементима низа и стринговима помоћу витичастих заграда („$вар{$идк}“), функција ис_реал() и превођење на реал, коришћење родитељске кључне речи без надређене класе, параметар аллов_урл_инцлуде конфигурације , користећи арраи_кеи_екистс() на објектима.
Функције гет_магиц_куотес_гпц(), гет_магиц_куотес_рунтиме() и
хебревц(), цонверт_цир_стринг(), монеи_формат(), езмлм_хасх(), ресторе_инцлуде_патх(), лдап_цонтрол_пагед_ресулт_респонсе(), лдап_цонтрол_пагед_ресулт(), РефлецтионТипе::__тоСтринг().
Упозорење о коришћењу застареле функције је дато када покушавате да обрадите нетачне симболе у функцијама
басе_цонверт(), биндец(), оцтдец() и хекдец(), и када наведете образац који није низ у мб_ерег_реплаце().