Санҷиши алфа PHP 8.2 оғоз шуд

Нахустин алфа-версияи шохаи нави забони барномасозии PHP 8.2 муаррифӣ шуд. Нашри он 24 ноябр дар назар аст. Навовариҳои асосӣ, ки аллакай барои санҷиш дастрасанд ё барои татбиқ дар PHP 8.2 ба нақша гирифта шудаанд:

  • Навъҳои алоҳидаи "дурӯғ" ва "null" илова карда шуданд, ки онҳоро масалан барои функсия барои баргардонидани парчами қатъкунии хато ё арзиши холӣ истифода бурдан мумкин аст. Пештар, "false" ва "null" танҳо дар якҷоягӣ бо дигар намудҳо истифода мешуданд (масалан, "string|false"), аммо ҳоло онҳо метавонанд алоҳида истифода шаванд: function alwaysFalse(): false { return false; }
  • Қобилияти қайд кардани синф ҳамчун танҳо барои хондан илова карда шуд. Хусусиятҳоро дар чунин синфҳо танҳо як маротиба муқаррар кардан мумкин аст, ки баъд аз он онҳоро тағир додан мумкин нест. Пештар, хосиятҳои синфҳои алоҳида метавонистанд танҳо барои хондан қайд карда шаванд, аммо акнун шумо метавонед ин режимро барои ҳама хосиятҳои синф якбора фаъол созед. Муайян кардани парчами "танҳо хондан" дар сатҳи синф инчунин хосиятҳоро аз илова кардани динамикӣ ба синф бозмедорад. синфи танҳо барои хондан Post { функсияи оммавӣ __созиш (сатри оммавӣ $сарлавҳа, Муаллифи ҷамъиятӣ $муаллиф, ) {} } $post = Post нав(/* … */); $post->номаълум = 'нодуруст'; // Хатогӣ: Амволи динамикӣ эҷод карда намешавад Post::$номаълум
  • Қобилияти ба таври динамикӣ эҷод кардани хосиятҳо дар синф (ба мисли "пост-> номаълум" дар мисоли боло) бекор карда шудааст. Дар PHP 9.0, дастрасӣ ба хосиятҳое, ки дар аввал дар синф муайян карда нашудаанд, ба хатогӣ оварда мерасонад (ErrorException). Синфҳое, ки усулҳои __get ва __set-ро барои эҷоди хосиятҳо ё хосиятҳои динамикӣ дар stdClass таъмин мекунанд, бидуни тағирот кор мекунанд, танҳо кори номувофиқ бо хосиятҳои мавҷудбуда дастгирӣ карда мешавад, то таҳиякунанда аз хатогиҳои пинҳоншуда муҳофизат карда шавад. Барои нигоҳ доштани кори коди кӯҳна, атрибути "#[AllowDynamicProperties]" пешниҳод карда мешавад, ки ба истифодаи хосиятҳои динамикӣ имкон медиҳад.
  • Қобилияти филтр кардани параметрҳои ҳассосро дар натиҷаи пайгирии стек ҳангоми хатогӣ таъмин мекунад. Вақте ки маълумот дар бораи хатогиҳо ба таври худкор ба хидматҳои тарафи сеюм фиристода мешавад, ки мушкилотро пайгирӣ мекунанд ва таҳиягаронро дар бораи онҳо огоҳ мекунанд, буридани маълумоти муайян лозим аст. Масалан, шумо метавонед параметрҳоеро, ки номи корбарон, паролҳо ва тағирёбандаҳои муҳити зистро дар бар мегиранд, аз пайгирӣ хориҷ кунед. санҷиши функсия( $foo, #[\SensitiveParameter] $password, $baz ) {world new Exception('Хато'); } тест('foo', 'парол', 'baz'); Хатои марговар: Истиснои дастгирнашуда: Хатогӣ дар test.php:8 пайгирии стек: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') №1 {main} дар test.php партофта шудааст дар хати 8
  • Имконияти иваз кардани арзишҳои тағирёбанда ба сатрҳо бо истифода аз ифодаҳои "${var}" ва ${(var)} бекор карда шудааст. Дастгирии ивазкуниҳои маъмулан истифодашавандаи "{$var}" ва "$var" нигоҳ дошта шудааст. Масалан: "Салом {$world}"; Хуб "Салом $world"; Хуб "Салом ${world}"; Қатъ шудааст: Истифодаи ${} дар сатрҳо бекор карда шудааст
  • Зангҳои қисман дастгирӣшаванда, ки онҳоро тавассути "call_user_func($callable)" даъват кардан мумкин аст, аммо зангро дар шакли "$callable()" дастгирӣ намекунад: "self::method" "parent::method" "static" ::method " ["худ", "метод"] ["волид", "метод"] ["статикӣ", "метод"] ["Фу", "Бар::метод"] [нав Фу, "Бар: :метод" ]
  • Табдилдиҳии парвандаи мустақил аз забони маҳаллӣ амалӣ карда шуд. Функсияҳо ба монанди strtolower() ва strtoupper() ҳоло ҳамеша ҳолати аломатҳоро дар диапазони ASCII табдил медиҳанд, ки гӯё ба маҳалли "C" гузошта шудааст.

Манбаъ: opennet.ru

Илова Эзоҳ