PHP 8.2 ၏ Alpha စမ်းသပ်မှုကို စတင်လိုက်ပါပြီ။

PHP 8.2 ပရိုဂရမ်းမင်းဘာသာစကား၏ ဌာနခွဲအသစ်၏ ပထမဆုံး အယ်လ်ဖာထုတ်လွှတ်မှုကို တင်ပြလိုက်ပါသည်။ ဖြန့်ချိမည့်ရက်ကို နိုဝင်ဘာ ၂၄ ရက်တွင် ပြုလုပ်ရန် စီစဉ်ထားသည်။ PHP 24 တွင် စမ်းသပ်ခြင်း သို့မဟုတ် အကောင်အထည်ဖော်ရန် စီစဉ်ထားသော အဓိက တီထွင်ဆန်းသစ်မှုများကို ရရှိထားပြီးဖြစ်သည်-

  • သီးခြားအမျိုးအစား "false" နှင့် "null" တို့ကို ထည့်သွင်းထားပြီး၊ ဥပမာအားဖြင့်၊ လုပ်ဆောင်ချက်တစ်ခုမှ အမှားတစ်ခုနှင့် ပြီးမြောက်မှုအမှတ်အသားကို ပြန်ပေးရန်အတွက် အသုံးပြုနိုင်သည့် "false" နှင့် "null" တို့ဖြစ်သည်။ ယခင်က၊ "false" နှင့် "null" ကို အခြားအမျိုးအစားများနှင့်သာ တွဲဖက်အသုံးပြုနိုင်ပါသည် (ဥပမာ၊ "string|false")၊ သို့သော် ယခုအခါ ၎င်းတို့ကို သီးခြားအသုံးပြုနိုင်သည်- function alwaysFalse(): false { return false; }
  • အတန်းတစ်ခုကို ဖတ်ရန်သာအဖြစ် အမှတ်အသားပြုနိုင်စွမ်းကို ပေါင်းထည့်ထားသည်။ ထိုသို့သော အတန်းများတွင် ပိုင်ဆိုင်မှုများကို တစ်ကြိမ်သာ သတ်မှတ်နိုင်သည်၊ ထို့နောက်တွင် ၎င်းတို့သည် ပြောင်းလဲနိုင်တော့မည် မဟုတ်ပါ။ ယခင်က အတန်းဂုဏ်သတ္တိများကို ဖတ်ရန်သာ အမှတ်အသားပြုထားနိုင်သော်လည်း ယခုအခါ အတန်းဂုဏ်သတ္တိအားလုံးအတွက် ဤမုဒ်ကို တစ်ပြိုင်နက် ဖွင့်နိုင်ပါပြီ။ အတန်းအဆင့်ရှိ "ဖတ်ရန်သာ" အလံကို သတ်မှတ်ခြင်းသည် အတန်းသို့ ရွေ့လျားနိုင်သော ဂုဏ်သတ္တိများ ထပ်လောင်းခြင်းကို ပိတ်ဆို့သည်။ readonly class Post { public function __construct( public string $title ၊ public Author $author ၊ ) {} } $post = new Post(/* … */); $post->unknown = 'မှားသည်'; // အမှား- ပြောင်းလဲနေသော ပိုင်ဆိုင်မှု Post::$unknown ကို ဖန်တီး၍မရပါ။
  • အတန်းတစ်ခုရှိ ဒိုင်နမစ်နည်းဖြင့် ဂုဏ်သတ္တိများ ဖန်တီးနိုင်မှုကို ရပ်တန့်ထားသည် (အထက်ဥပမာရှိ "post->unknown" ကဲ့သို့)။ PHP 9.0 တွင်၊ class တွင် မူလသတ်မှတ်ထားခြင်းမရှိသော ဂုဏ်သတ္တိများကို ဝင်ရောက်ကြည့်ရှုခြင်းသည် အမှားအယွင်း (ErrorException) ကို ဖြစ်ပေါ်စေသည်။ ဂုဏ်သတ္တိများဖန်တီးရန်အတွက် __get နှင့် __set နည်းလမ်းများကို ပံ့ပိုးပေးသော အတန်းများ သို့မဟုတ် stdClass ရှိ ရွေ့လျားနိုင်သောဂုဏ်သတ္တိများသည် မပြောင်းလဲဘဲ ဆက်လက်အလုပ်လုပ်နေမည်ဖြစ်ပြီး၊ ဆော့ဖ်ဝဲရေးသားသူအား လျှို့ဝှက်အမှားအယွင်းများမှ ကာကွယ်ရန်အတွက် ဖုံးကွယ်ထားသော အမှားအယွင်းများမှ ကာကွယ်ရန်အတွက် __get နှင့် __set နည်းလမ်းများကို ပံ့ပိုးပေးသည့် အတန်းများ ကုဒ်ဟောင်းကို ဆက်လက်လုပ်ဆောင်ရန်၊ "#[AllowDynamicProperties]" ရည်ညွှန်းချက်ကို အဆိုပြုထားပြီး၊ တက်ကြွသောဂုဏ်သတ္တိများကို အသုံးပြုခွင့်ပေးသည်။
  • အမှားအယွင်းတစ်ခုဖြစ်ပွားချိန်တွင် stack trace output တွင် အရေးကြီးသောဆက်တင်များကို စစ်ထုတ်နိုင်စွမ်းကို ပေးထားသည်။ ပြဿနာများကို ခြေရာခံပြီး ဆော့ဖ်ဝဲရေးသားသူများကို အသိပေးသည့် ပြင်ပဝန်ဆောင်မှုများထံ ဖြစ်ပေါ်လာသည့် အမှားများဆိုင်ရာ အချက်အလက်များကို အလိုအလျောက် ပေးပို့သည့်အခါ အချို့သော အချက်အလက်များကို ဖြတ်တောက်ရန် လိုအပ်ပါသည်။ ဥပမာအားဖြင့်၊ အသုံးပြုသူအမည်များ၊ စကားဝှက်များနှင့် ပတ်၀န်းကျင်ပြောင်းလဲနိုင်သော အမျိုးအစားများပါဝင်သည့် ခြေရာခံများမှ ကန့်သတ်ချက်များကို သင်ဖယ်ထုတ်နိုင်သည်။ လုပ်ဆောင်ချက်စမ်းသပ်ခြင်း($foo၊ #[\SensitiveParameter] $password၊ $baz) {ခြွင်းချက်အသစ်('Error'); } test('foo'၊ 'password'၊ 'baz'); ဆိုးရွားသော အမှား- မဖမ်းမိသော ခြွင်းချက်- test.php:8 တွင် အမှားအယွင်းများ အစုလိုက် ခြေရာကောက်- #0 test.php(11): test('foo'၊ Object(SensitiveParameterValue), 'baz') #1 {main} test.php တွင် ချလိုက်သည် အွန်လိုင်း ၈
  • "${var}" နှင့် ${(var)}" expressions များကို အသုံးပြု၍ ပြောင်းလဲနိုင်သောတန်ဖိုးများကို စာကြောင်းများအဖြစ် အစားထိုးနိုင်မှုကို ရပ်တန့်ထားသည်။ အသုံးများသော "{$var}" နှင့် "$var" အစားထိုးခြင်းများအတွက် ပံ့ပိုးမှုအား ထိန်းသိမ်းထားပါသည်။ ဥပမာ- "Hello {$world}"; အိုကေ "Hello $world"; အိုကေ "မင်္ဂလာပါ ${world}"; ကန့်ကွက်ထားသည်- စာကြောင်းများတွင် ${} ကိုအသုံးပြုခြင်းကို ကန့်ကွက်ထားသည်။
  • "call_user_func($callable)" မှတစ်ဆင့် ခေါ်ဆိုနိုင်သော တစ်စိတ်တစ်ပိုင်း ပံ့ပိုးပေးထားသည့် ခေါ်ဆိုနိုင်သော ခေါ်ဆိုမှုများကို ရပ်ဆိုင်းထားသော်လည်း "$callable()" ဖောင်ပုံစံဖြင့် ခေါ်ဆိုခြင်းကို မပံ့ပိုးပါ: "self::method" "parent::method" "static :: နည်းလမ်း" ["မိမိကိုယ်ကို", "နည်းလမ်း"] ["မိဘ", "နည်းလမ်း"] ["ငြိမ်", "နည်းလမ်း"] ["Foo", "Bar::method"] [Foo အသစ်၊ "ဘား- :နည်းလမ်း" "]
  • ဒေသန္တရ-အမှီအခိုကင်းသော ကိစ္စအဖြစ် ပြောင်းလဲခြင်းကို အကောင်အထည်ဖော်ခဲ့သည်။ strtolower() နှင့် strtoupper() ကဲ့သို့သော လုပ်ဆောင်ချက်များသည် ယခုအခါ ဒေသန္တရကို "C" သို့ သတ်မှတ်သည့်အခါ ASCII အကွာအဝေးရှိ ဇာတ်ကောင်များ၏ ဖြစ်ရပ်မှန်ကို အမြဲပြောင်းလဲပါသည်။

source: opennet.ru

မှတ်ချက် Add