Издање програмског језика ПХП 7.4

После годину дана развоја представљени издање програмског језика ПХП КСНУМКС. Нова грана укључује низ нових функција, као и неколико промена које нарушавају компатибилност.

Кључ побољшања у ПХП 7.4:

  • Откуцана својства - својства класе сада могу укључивати декларације типа, на пример:

    корисник класе {
    публиц инт $ид;
    јавни стринг $наме;
    }

  • Скраћено синтакса за дефинисање функција “фн(параметер_лист) => екпр” са везивањем опсега по вредности. На пример, „фн($к) => $к + $и” је аналогно „$фн2 = фунцтион ($к) усе ($и) {ретурн $к + $и;}”);
  • Скраћеница оператора доделе "??=" која се може користити за дефинисање подразумеване вредности ("а ??= б" је слично као "а = а ?? б", ако је "а" дефинисана његова вредност се чува, а ако није дефинисана је додељена вредност "б" );
  • Ограничен прилика очување хијерархије наслеђивања типова у изведеним типовима повратка или могућност да се хијерархија оригиналних типова преокрене у изведеним типовима аргумената (коваријанса тип повратка и контраваријантност типа аргумента). Следеће конструкције сада могу да се користе у ПХП-у:

    класа А {}
    класа Б проширује А {}

    класа Продуцент {
    метод јавне функције(): А {}
    }
    цласс ЦхилдПродуцер проширује Продуцер {
    метод јавне функције(): Б {}
    }

  • Оператор за распакивање унутар низова „…$вар“, дозвољавајући извршити замену постојећих низова приликом дефинисања новог низа;

    $партс = ['јабука', 'крушка'];
    $фруитс = ['банана', 'наранџа', ...$партс, 'лубеница'];
    // ['банана', 'наранџа', 'јабука', 'крушка', 'лубеница'];

  • Прилика визуелно представљање великих бројева са граничницима у нумеричким литералима (1_000_000_00);
  • подршка слабе карике, који вам омогућавају да задржите референцу на објекат, али не блокирају сакупљач смећа да избрише придружени објекат;
  • Нови механизма серијализација објеката (комбинација Сериализабле и __слееп()/__вакеуп()), која је заменила интерфејс Сериализабле, који ће бити застарео;

    // Враћа низ који садржи сва стања објекта;
    јавна функција __сериализе(): низ;

    // Враћа стање објекта из низа
    јавна функција __унсериализе(арраи $дата): воид;

  • Дозвољено је избацивање изузетака из методе __тоСтринг();
  • Додата подршка за претходно учитавање кеша објектног кода. Додат параметар за подешавање
    опцацхе.прелоад, преко које можете навести ПХП скрипту која ће бити преведена и покренута када се сервер покрене. Ова скрипта може да учита опкод других датотека кроз њихово директно укључивање или коришћење функције опцацхе_цомпиле_филе();

  • Додата црц32ц функција у Хеш екстензију за израчунавање контролних сума коришћењем полинома Цастагноли;
  • Додата подршка функцији пассворд_хасх() за методе хеширања лозинке аргон2и и аргин2ид, у имплементацији библиотеке Натријума, ако је ПХП изграђен без либаргона;
  • Додата функција мб_стр_сплит(), слична стр_сплит(), али не ради са бајтовима већ са позицијама знакова у вишебајтном низу;
  • Функција стрип_тагс() сада има могућност да проследи низ са именима ознака, тј. уместо стрип_тагс($стр, ‘’) сада можете навести стрип_тагс($стр, [‘а’, ‘п’]);
  • проц_опен() омогућава да се операнди набрајају у низу, а не у стрингу за покретање, а такође обезбеђује преусмеравање нити и подршку за нулл дескриптор датотеке;

    проц_опен(['пхп', '-р', 'ецхо "Хелло Ворлд\н";'], $дескриптори, $пипес);

    // Као 2>&1 у љусци
    проц_опен($цмд, [1 => [‘цеви’, ‘в’], 2 => [‘преусмеравање’, 1]], $цеви);

    // као 2>/дев/нулл или 2>нул у љусци
    проц_опен($цмд, [1 => ['цев', 'в'], 2 => ['нулл']], $пипес);

  • Фиребирд/Интербасе, Рецоде и ВДДКС екстензије су искључене из основног пакета. Ове екстензије се сада дистрибуирају преко ПЕЦЛ-а;
  • Пребачен у категорију застарео функције као што су угнежђени тернарни оператори без заграда, приступ елементима низа и стринговима помоћу витичастих заграда („$вар{$идк}“), функција ис_реал() и превођење на реал, коришћење родитељске кључне речи без надређене класе, параметар аллов_урл_инцлуде конфигурације , користећи арраи_кеи_екистс() на објектима.

    Функције гет_магиц_куотес_гпц(), гет_магиц_куотес_рунтиме() и
    хебревц(), цонверт_цир_стринг(), монеи_формат(), езмлм_хасх(), ресторе_инцлуде_патх(), лдап_цонтрол_пагед_ресулт_респонсе(), лдап_цонтрол_пагед_ресулт(), РефлецтионТипе::__тоСтринг().

    Упозорење о коришћењу застареле функције је дато када покушавате да обрадите нетачне симболе у ​​функцијама
    басе_цонверт(), биндец(), оцтдец() и хекдец(), и када наведете образац који није низ у мб_ерег_реплаце().

Извор: опеннет.ру

Додај коментар