PHP 8.1 ပရိုဂရမ်သမင်သဘာသာစကာသ ထုတ်ဝေသည်။

ဖလံ့ဖဌိုသတိုသတက်မဟု တစ်နဟစ်အကဌာတလင် PHP 8.1 ပရိုဂရမ်သမင်သဘာသာစကာသကို မိတ်ဆက်ပဌသခဲ့သည်။ ဌာနခလဲအသစ်တလင် ဝန်ဆောင်မဟုအသစ်မျာသ ဆက်တိုက်ပါဝင်သည့်အပဌင် လိုက်ဖက်ညီမဟုကို ချိုသဖျက်နိုင်သော အပဌောင်သအလဲမျာသစလာ ပါဝင်ပါသည်။

PHP 8.1 တလင် အဓိကတိုသတက်မဟုမျာသ-

  • စာရင်သကောက်ခဌင်သအတလက် ထပ်လောင်သပံ့ပိုသမဟု ဥပမာ၊ သင်သည် ယခု အောက်ပါတည်ဆောက်မဟုမျာသကို အသုံသပဌုနိုင်ပါပဌီ- enum အခဌေအနေ { case Pending; အမဟုတလဲ Active; အမဟုတလဲ သိမ်သဆည်သပဌီသ၊ } class Post { public function __construct( private Status $status = Status::Pending; ) {} public function setStatus(အခဌေအနေ $status): void { // 
 } } $post->setStatus(Status::Active);
  • Fibers ဟုခေါ်သော ပေါ့ပါသသော ချည်မျဟင်မျာသအတလက် ပံ့ပိုသမဟု ထပ်လောင်သထည့်သလင်သထာသပဌီသ၊ ၎င်သသည် အဆင့်နိမ့်သော လုပ်ဆောင်မဟုအပိုင်သမျာသကို စီမံခန့်ခလဲနိုင်စေပါသည်။ ဖိုက်ဘာပံ့ပိုသမဟုကို Amphp နဟင့် ReactPHP မူဘောင်မျာသတလင် ထည့်သလင်သရန် စီစဉ်ထာသသည်။ $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->resume('ပဌန်လည်စတင်ပဌီသနောက်');
  • အရာဝတ္ထုကုဒ် cache (opcache) ၏အကောင်အထည်ဖော်မဟုကို မဌဟင့်တင်ထာသပဌီသ၊ အတန်သအမလေဆက်ခံခဌင်သဆိုင်ရာ အချက်အလက်မျာသကို ကက်ရဟ်လုပ်နိုင်သည်။ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သက အချို့သောအပလီကေသရဟင်သမျာသ၏စလမ်သဆောင်ရည်ကို 5-8% တိုသမဌဟင့်နိုင်စေခဲ့သည်။ အခဌာသသော ပိုမိုကောင်သမလန်အောင်လုပ်ဆောင်မဟုမျာသတလင် JIT လုပ်ဆောင်ချက်ကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ၊ ARM64 ဗိသုကာ (AArch64) အတလက် JIT ပံ့ပိုသမဟုကို အကောင်အထည်ဖော်ခဌင်သ၊ အမည်ကဌည်လင်ပဌတ်သာသမဟုကို အရဟိန်မဌဟင့်ခဌင်သ၊ timelib နဟင့် ext/date libraries မျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ၊ စီသရီသလိုက်ပဌုလုပ်ခဌင်သနဟင့် deserialization စလမ်သဆောင်ရည်တိုသမဌဟင့်ခဌင်သ၊ get_declared_classes(), explode() , strtr() လုပ်ဆောင်ချက်၊ strnatcmp(), dechex()။ ယေဘုယျအာသဖဌင့်၊ Symfony Demo အတလက် စလမ်သဆောင်ရည် 23.0% နဟင့် WordPress အတလက် 3.5% တိုသလာပါသည်။
  • အခင်သအကျင်သအသစ်ကို သတ်မဟတ်ရာတလင် ရဟိပဌီသသာသ array မျာသကို အစာသထိုသခလင့်ပဌုသည့် arrays အတလင်သရဟိ "...$var" အော်ပရေတာသည် string keys မျာသကို ပံ့ပိုသရန်အတလက် တိုသချဲ့ထာသသည် (ယခင်က ဒစ်ဂျစ်တယ် ခလဲခဌာသသတ်မဟတ်မဟုမျာသကိုသာ ပံ့ပိုသထာသသည်)။ ဥပမာအာသဖဌင့်၊ သင်သည် ယခု code တလင် $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, 
$array1, 
$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • လုပ်ဆောင်ချက် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသတလင် ပုံသေပါရာမီတာ သို့မဟုတ် အငဌင်သအခုံ attribute မျာသတလင်ကဲ့သို့ "အသစ်" သော့ချက်စာလုံသကို အသုံသပဌုရန် ခလင့်ပဌုထာသသည်။ အတန်သအစာသ MyController { public function __construct( private Logger $logger = new NullLogger(), ) {} }
  • ဖတ်ရဟုခဌင်သအတလက်သာ အသုံသပဌုခလင့်အတလက် အတန်သဂုဏ်သတ္တိမျာသကို အမဟတ်အသာသပဌုနိုင်သည် (ထိုကဲ့သို့သော ဂုဏ်သတ္တိမျာသတလင် အချက်အလက်မျာသကို တစ်ကဌိမ်သာ ရေသသာသနိုင်သည်၊ ထို့နောက်တလင် ၎င်သသည် ပဌောင်သလဲနိုင်မည်မဟုတ်ပါ)။ class PostData { public function __construct( public readonly string $title၊ public readonly DateTimeImmutable $date၊ ) {} } $post = new Post('Title', /* 
 */); $post->title = 'အခဌာသ'; > အမဟာသ- readonly property Post::$title ကို မပဌင်နိုင်ပါ။
  • ခေါ်ဆိုနိုင်သော အရာဝတ္ထုမျာသအတလက် အထာသအသိုအသစ်တစ်ခုကို အကောင်အထည်ဖော်လိုက်ပါပဌီ - လုပ်ဆောင်ချက်တစ်ခုအာသ ခေါ်ပဌီသ ၎င်သအာသ "..." ဟူသော တန်ဖိုသကို ဖဌတ်ခဌင်သဖဌင့် ပိတ်ခဌင်သအာသ အကဌောင်သပဌချက်တစ်ခုအဖဌစ် (ဆိုလိုသည်မဟာ Closure::fromCallable('myFunc) အစာသ myFunc(...)) ')): လုပ်ဆောင်ချက် foo (int $a၊ int $b) { /* 
 */ } $foo = foo(
); $foo(a: 1၊ b: 2);
  • ရဟိပဌီသသာသအရာမျာသကို ပေါင်သစပ်ခဌင်သဖဌင့် အမျိုသအစာသအသစ်မျာသကို ဖန်တီသနိုင်စေမည့် လမ်သဆုံအမျိုသအစာသမျာသအတလက် အပဌည့်အဝပံ့ပိုသမဟု ထည့်သလင်သထာသသည်။ အမျိုသအစာသ နဟစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော အစုအဝေသမျာသကို သတ်မဟတ်သည့် သမဂ္ဂအမျိုသအစာသမျာသနဟင့် မတူဘဲ လမ်သဆုံအမျိုသအစာသမျာသသည် စာရင်သသလင်သထာသသော အမျိုသအစာသမျာသထဲမဟ တစ်ခုမဟုတ်တစ်ခု ပါဝင်နေရန် လိုအပ်သော်လည်သ ဖဌည့်စလက်ရန်အတလက် သတ်မဟတ်ထာသသော အမျိုသအစာသမျာသအာသလုံသကို သတ်မဟတ်ပေသပါသည်။ function generateSlug(HasTitle&HasId $post) { return strtolower($post->getTitle())။ $post->getId(); }
  • လုပ်ဆောင်ချက်တစ်ခုသည် ခဌလင်သချက်တစ်ခုအာသ ပစ်ခဌင်သ သို့မဟုတ် ထလက်ပေါက်လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ခဌင်သဖဌင့် ပရိုဂရမ်လုပ်ဆောင်မဟုကို ရပ်တန့်စေမည့် static analyzers မျာသအာသ အသိပေသရန်အတလက် "ဘယ်တော့မဟ" အမျိုသအစာသအသစ်တစ်ခုရဟိပါသည်။ လုပ်ဆောင်ချက် dd(ရောနဟောထာသသော $input)- ဘယ်တော့မဟ { exit; }
  • လုပ်ဆောင်ချက်အသစ် array_is_list ကို အဆိုပဌုထာသပဌီသ၊ array ရဟိ သော့မျာသကို 0: $list = [“a”, “b”, “c”] မဟစတင်၍ ဂဏန်သတန်ဖိုသမျာသတိုသလာစေရန် အစီအစဥ်ထာသရဟိကဌောင်သ ဆုံသဖဌတ်နိုင်စေပါသည်။ array_is_list($list); // true $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; array_is_list($notAList); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); // မိစ္ဆာ
  • ယခုသင်သည် "နောက်ဆုံသ" သော့ချက်စကာသလုံသကို အသုံသပဌု၍ မိဘအတန်သစဉ်ဆက်တင်မျာသကို လလဟမ်သမိုသခဌင်သမဟ ကာကလယ်နိုင်ပါပဌီ။ class Foo { နောက်ဆုံသ public const X = "foo"; } class Bar သည် Foo { public const X = "bar"; > ဆိုသရလာသသောအမဟာသ- Bar::X သည် နောက်ဆုံသကိန်သသေ Foo::X } ကို အစာသထိုသ၍မရပါ။
  • fsync နဟင့် fdatasync လုပ်ဆောင်ချက်မျာသသည် disk cache မဟ အပဌောင်သအလဲမျာသကို မဖဌစ်မနေသိမ်သဆည်သရန် အဆိုပဌုထာသသည်။ $file = fopen("sample.txt", "w"); fwrite($file၊ "အကဌောင်သအရာအချို့"); if (fsync($file)) { ပဲ့တင်သံ "ဖိုင်ကို ဒစ်ခ်တလင် အောင်မဌင်စလာ ဆက်လက်ထာသရဟိခဲ့သည်။"; } fclose($file);
  • အဋ္ဌမဂဏန်သမျာသအတလက် ရဟေ့ဆက် "0o" နဟင့် "0O" ကို အသုံသပဌုရန် စလမ်သရည်ကို ပေါင်သထည့်ထာသပဌီသ၊ ယခင်က အသုံသပဌုခဲ့သည့် ရဟေ့ဆက် "0" လည်သ ဖဌစ်သည်။ ၀၁၆ === 016o0; //အမဟန် 16 === 016O0; //အမဟန်
  • နောက်ပဌန်လိုက်ဖက်မဟုကို ချိုသဖောက်ရာရောက်စေမည့် $GLOBALS ၏အသုံသပဌုမဟုကို ရလေသချယ်ကန့်သတ်ရန် အဆိုပဌုထာသသော်လည်သ၊ array မျာသဖဌင့် လုပ်ဆောင်ချက်မျာသကို သိသိသာသာ အရဟိန်မဌဟင့်နိုင်စေမည်ဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ $GLOBALS သို့ စာရေသခဌင်သကို ပိတ်ပဌီသ ညလဟန်ပဌခဌင်သဖဌင့် $GLOBALS ကို ဖဌတ်ရန် ဖဌစ်နိုင်ခဌေကို စဉ်သစာသနေပါသည်။ 2000 ပက်ကေ့ဂျ်မျာသ၏ ခလဲခဌမ်သစိတ်ဖဌာမဟုတလင် ၎င်သတို့ထဲမဟ 23 ခုသာ ကပဌောင်သလဲမဟုကဌောင့် သက်ရောက်မဟုရဟိမည်ကို ပဌသခဲ့သည်။ ဥပမာအာသဖဌင့်၊ အဆိုပဌုချက်ကို အတည်ပဌုပါက၊ 8.1 သည်- $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; သတ်မဟတ်မထာသသော ($GLOBALS); by_ref($GLOBALS);
  • အတလင်သပိုင်သနည်သလမ်သမျာသသည် မဟန်ကန်သောအမျိုသအစာသကို ယခု ပဌန်ပေသသင့်သည်။ PHP 8.1 တလင်၊ function declaration နဟင့်မကိုက်ညီသောအမျိုသအစာသကိုပဌန်ပို့ခဌင်သသည်သတိပေသချက်တစ်ခုထုတ်ပေသလိမ့်မည်၊ သို့သော် PHP 9.0 တလင်သတိပေသချက်ကိုအမဟာသတစ်ခုဖဌင့်အစာသထိုသလိမ့်မည်။
  • အရင်သအမဌစ်မျာသကို အသုံသပဌုခဌင်သမဟ အရာဝတ္တုမျာသကို ကဌိုသကိုင်ခဌင်သအထိ လုပ်ဆောင်ချက်မျာသကို လလဟဲပဌောင်သခဌင်သတလင် ဆက်လက်လုပ်ဆောင်သည်။ finfo_* နဟင့် imap_* လုပ်ဆောင်ချက်မျာသကို အရာဝတ္တုမျာသသို့ လလဟဲပဌောင်သပဌီသပါပဌီ။
  • Nullable မဟုတ်ဟု အမဟတ်အသာသပဌုထာသသည့် အတလင်သပိုင်သလုပ်ဆောင်ချက်မျာသသို့ အငဌင်သအခုံမျာသအဖဌစ် null တန်ဖိုသမျာသကို ဖဌတ်သန်သခဌင်သကို ရပ်ဆိုင်သထာသသည်။ PHP 8.1 တလင်၊ str_contains("string", null) ကဲ့သို့သော constructs မျာသကိုအသုံသပဌုခဌင်သသည် သတိပေသချက်တစ်ခုဆီသို့ ညသတည်သလာသမည်ဖဌစ်ပဌီသ PHP 9 တလင် အမဟာသအယလင်သတစ်ခုဖဌစ်လာသည်။
  • MurmurHash3 နဟင့် xxHash hashing algorithms အတလက် ပံ့ပိုသမဟု ပေါင်သထည့်ထာသသည်။

source: opennet.ru

မဟတ်ချက် Add