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

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

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

  • Додата могућност означавања класе као само за читање. Својства у таквим класама могу се подесити само једном, након чега неће бити доступна за промену. Раније су појединачна својства класе могла бити означена само за читање, али сада можете да укључите овај режим за сва својства класе одједном. Одређивање ознаке „само за читање“ на нивоу класе такође блокира динамичко додавање својстава класи. класа само за читање Објава { јавна функција __цонструцт( јавни стринг $титле, јавни аутор $аутхор, ) {} } $пост = нова објава(/* … */); $пост->ункновн = 'погрешно'; // Грешка: Није могуће креирати динамичко својство Пост::$ункновн
  • Додати су одвојени типови „труе”, „фалсе” и „нулл”, који могу узети само једну важећу вредност и користе се, на пример, за враћање функције са ознаком за завршетак грешке или празном вредношћу. Раније су „труе”, „фалсе” и „нулл” могли да се користе само у комбинацији са другим типовима (на пример, „стринг|фалсе”), али сада се могу користити одвојено: функција алваисФалсе(): фалсе { ретурн фалсе ; }
  • Обезбеђена је могућност филтрирања осетљивих подешавања у излазу праћења стека у време грешке. Изрезивање одређених информација може бити потребно када се информације о грешкама које се јављају аутоматски шаљу услугама трећих страна које прате проблеме и обавештавају програмере о њима. На пример, можете да искључите параметре из праћења који укључују корисничка имена, лозинке и променљиве окружења. фунцтион тест( $фоо, #[\СенситивеПараметер] $пассворд, $баз ) { тхров нев Екцептион('Еррор'); } тест('фоо', 'пассворд', 'баз'); Фатална грешка: Неухваћен изузетак: Грешка у тест.пхп:8 Праћење стека: #0 тест.пхп(11): тест('фоо', Објецт(СенситивеПараметерВалуе), 'баз') #1 {маин} бачено у тест.пхп на линији 8
  • Дозвољено да дефинише константе у особинама (особина, механизам за поновно коришћење кода). Константи дефинисаним у особини може се приступити кроз класу која користи особину (али не и преко имена особине). особина Фоо { публиц цонст ЦОНСТАНТ = 1; јавна функција бар(): инт { ретурн селф::ЦОНСТАНТ; // Фатална грешка } } цласс Бар { усе Фоо; } вар_думп(Бар::ЦОНСТАНТ); // 1
  • Додата је могућност специфицирања типова у дисјунктивном нормалном облику (ДНФ, Дисјунцтиве Нормал Форм), што вам омогућава да комбинујете унију типова (колекција два или више типова) и пресека типова (типова чије вредности потпадају под неколико врсте истовремено). цласс Фоо { публиц фунцтион бар((А&Б)|нулл $ентити) { иф ($ентити === нулл) { ретурн нулл; } ретурн $ентити; } }
  • Предложено је ново проширење „Рандом“ са функцијама и класама за генерисање псеудослучајних бројева и низова. Модул обезбеђује објектно оријентисан интерфејс, омогућава вам да изаберете различите механизме за генерисање псеудо-случајних бројева, укључујући и оне погодне за употребу у криптографији, и пружа помоћне функције, на пример, за насумично мешање низова и стрингова, одабир насумичног низа кључева, истовремено коришћење више генератора са сопственом независном државом. $рнг = $ис_продуцтион? нев Рандом\Енгине\Сецуре() : нови Рандом\Енгине\Мт19937(1234); $рандомизер = нови Рандом\Рандомизер($рнг); $рандомизер->схуффлеСтринг('фообар');
  • Имплементирана конверзија великих и малих слова независна од језика. Функције као што су стртоловер() и стртоуппер() сада увек конвертују велика и мала слова знакова у АСЦИИ опсегу, као када се локализација поставља на "Ц".
  • Додате нове функције: мискли_екецуте_куери, цурл_упкееп, мемори_ресет_пеак_усаге, ини_парсе_куантити, либкмл_гет_ектернал_ентити_лоадер, содиум_црипто_стреам_кцхацха20_кор_иц, опенссл_ципхер_кеи_ленгтх.
  • Додате нове методе: мискли::екецуте_куери, ЗипАрцхиве::гетСтреамИндек, ЗипАрцхиве::гетСтреамНаме, ЗипАрцхиве::цлеарЕррор, РефлецтионФунцтион::исАнонимоус, РефлецтионМетход::хасПрототипе.
  • Способност динамичког креирања својстава у класи је застарела. У ПХП 9.0, приступ особинама које нису иницијално дефинисане у класи ће довести до грешке (ЕррорЕкцептион). Класе које обезбеђују методе __гет и __сет за креирање својстава или динамичке особине у стдЦласс ће наставити да раде без промена, само ће имплицитни рад са непостојећим својствима бити подржан да би се програмер заштитио од скривених грешака. Да би се сачувао рад старог кода, предложен је атрибут „#[АлловДинамицПропертиес]“, који омогућава коришћење динамичких својстава.
  • Могућност замене вредности променљивих у низове помоћу израза „${вар}“ и ${(вар)}“ је застарела. Подршка за често коришћене замене „{$вар}“ и „$вар“ је задржана. На пример: "Здраво {$ворлд}"; ОК "Хелло $ворлд"; ОК "Здраво ${ворлд}"; Застарело: Употреба ${} у стринговима је застарела
  • Делимично подржани позиви који се могу позвати преко "цалл_усер_фунц($цаллабле)" су застарели, али не подржавају позивање у облику "$цаллабле()": "селф::метход" "парент::метход" "статиц :: метход" ["селф", "метход"] ["родитељ", "метод"] ["статиц", "метход"] ["Фоо", "Бар::метход"] [ново Фоо, "Бар: :метход" "]
  • Директива еррор_лог_моде је додата у подешавања, омогућавајући вам да одредите начин приступа евиденцији грешака.

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

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