Սկսվել է PHP 8.2-ի ալֆա թեստավորումը

Ներկայացվել է PHP 8.2 ծրագրավորման լեզվի նոր ճյուղի առաջին ալֆա թողարկումը։ Թողարկումը նախատեսված է նոյեմբերի 24-ին։ Հիմնական նորամուծություններն արդեն հասանելի են թեստավորման համար կամ նախատեսված են PHP 8.2-ում ներդրման համար.

  • Ավելացվել են «false» և «null» առանձին տիպեր, որոնք կարող են օգտագործվել, օրինակ, ֆունկցիայի համար, որը վերադարձնում է սխալի դադարեցման դրոշակ կամ դատարկ արժեք: Նախկինում «false» և «null»-ը կարող էին օգտագործվել միայն այլ տեսակների հետ միասին (օրինակ՝ «string|false»), սակայն այժմ դրանք կարող են օգտագործվել առանձին՝ function alwaysFalse(): false { return false; }
  • Ավելացվեց դասը որպես միայն կարդալու համար նշելու հնարավորություն: Նման դասերի հատկությունները կարող են սահմանվել միայն մեկ անգամ, որից հետո դրանք չեն կարող փոխվել: Նախկինում դասի անհատական ​​հատկությունները կարող էին նշվել միայն կարդալու համար, բայց այժմ դուք կարող եք միացնել այս ռեժիմը միանգամից բոլոր դասի հատկությունների համար: Դասի մակարդակում «ընթերցվելու համար» դրոշը նշելը նաև արգելափակում է հատկությունների դինամիկ ավելացումը դասին: միայն կարդալու դաս Փոստ { public ֆունկցիա __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'սխալ'; // Սխալ. Հնարավոր չէ ստեղծել դինամիկ հատկություն Գրառում::$անհայտ
  • Դասում դինամիկ հատկություններ ստեղծելու հնարավորությունը (ինչպես «post->unknown» վերը նշված օրինակում) հնացել է: PHP 9.0-ում, մուտք գործելու հատկություններ, որոնք ի սկզբանե սահմանված չեն դասում, կհանգեցնի սխալի (ErrorException): Դասերը, որոնք տրամադրում են __get և __set մեթոդներ՝ հատկություններ ստեղծելու համար, կամ դինամիկ հատկություններ stdClass-ում, կշարունակեն աշխատել առանց փոփոխությունների, միայն գոյություն չունեցող հատկություններով անուղղակի աշխատանքը կաջակցվի՝ պաշտպանելու ծրագրավորողին թաքնված սխալներից: Հին կոդի աշխատանքը պահպանելու համար առաջարկվում է «#[AllowDynamicProperties]» հատկանիշը, որը թույլ է տալիս օգտագործել դինամիկ հատկություններ:
  • Ապահովում է սխալի ժամանակ զտելու զգայուն պարամետրերը stack trace ելքում: Որոշակի տեղեկատվության անջատումը կարող է անհրաժեշտ լինել, երբ տեղի ունեցող սխալների մասին տեղեկատվությունը ավտոմատ կերպով ուղարկվում է երրորդ կողմի ծառայություններին, որոնք հետևում են խնդիրներին և ծրագրավորողներին տեղեկացնում դրանց մասին: Օրինակ, դուք կարող եք բացառել պարամետրերը, որոնք ներառում են օգտվողի անունները, գաղտնաբառերը և շրջակա միջավայրի փոփոխականները հետագծումից: ֆունկցիայի թեստ( $foo, #[\SensitiveParameter] $password, $baz ) { նետել նոր Բացառություն ('Սխալ'); } test('foo', 'password', 'baz'); Ճակատագրական սխալ. Չբռնված Բացառություն. Սխալ թեստում.php:8 Կույտի հետք՝ #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {հիմնական} նետված է test.php 8-րդ տողում
  • Փոփոխական արժեքները տողերի մեջ փոխարինելու հնարավորությունը՝ օգտագործելով «${var}» և ${(var)} արտահայտությունները, հնացել է: Սովորաբար օգտագործվող «{$var}» և «$var» փոխարինումների աջակցությունը պահպանվել է: Օրինակ՝ «Բարև {$world}»; OK «Բարև $world»; OK «Բարև ${world}»; Հնացած. ${}-ի օգտագործումը տողերում հնացած է
  • Հնացած մասնակի աջակցվող կանչելիներ, որոնք կարելի է կանչել «call_user_func($callable)»-ի միջոցով, բայց չեն աջակցում «$callable()»-ի ձևով զանգեր` «self::method» «parent::method» «static» ::method: " ["ես", "մեթոդ"] ["ծնող", "մեթոդ"] ["ստատիկ", "մեթոդ"] ["Foo", "Bar::method"] [new Foo, "Bar: :method" ]
  • Իրականացվել է տեղանքից անկախ գործի փոխակերպում: Գործառույթները, ինչպիսիք են strtolower()-ը և strtoupper()-ը, այժմ միշտ փոխակերպում են ASCII տիրույթի նիշերի տառերը, ասես դրված լինեն «C» տեղանքի վրա:

Source: opennet.ru

Добавить комментарий