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

ဖွံ့ဖြိုးတိုးတက်မှုတစ်နှစ်ပြီးနောက် တင်ဆက် ပရိုဂရမ်းမင်းဘာသာစကား ထုတ်ဝေခြင်း။ PHP ကို ​​7.4. ဌာနခွဲအသစ်တွင် ဝန်ဆောင်မှုအသစ်များ ဆက်တိုက်ပါဝင်သည့်အပြင် လိုက်ဖက်ညီမှုကို ချိုးဖျက်နိုင်သော အပြောင်းအလဲများစွာ ပါဝင်ပါသည်။

သော့ တိုးတက်မှုများ PHP 7.4 တွင်-

  • ရိုက်ထည့်ထားသော Properties - အတန်းဂုဏ်သတ္တိများသည် ယခုတွင် အမျိုးအစားကြေငြာချက်များ ပါဝင်နိုင်သည်၊ ဥပမာ-

    အတန်းအသုံးပြုသူ {
    အများသူငှာ int $id;
    အများသူငှာ $name;
    }

  • အတိုကောက် နယ်ပယ်တန်ဖိုးအလိုက် ပေါင်းစပ်ထားသော “fn(parameter_list) => expr” လုပ်ဆောင်ချက်များကို အဓိပ္ပာယ်ဖွင့်ဆိုရန်အတွက် အထားအသို။ ဥပမာအားဖြင့်၊ “fn($x) => $x + $y” သည် “$fn2 = function ($x) use ($y) {return $x + $y;}”);
  • လက်တိုဟယ် အော်ပရေတာ "??=" ၏ ပုံသေတန်ဖိုးကို သတ်မှတ်ရန် အသုံးပြုနိုင်သည့် ("a ??= b" သည် "a = a ?? b" နှင့် ဆင်တူသည် value "b" ကို သတ်မှတ်ပေးသည် );
  • ကန့်သတ်ချက် အခွင့်အရေး ဆင်းသက်လာသော ပြန်ပေးအမျိုးအစားများတွင် အမျိုးအစားများ၏ အမွေဆက်ခံမှု အထက်အောက်ကို ထိန်းသိမ်းထားခြင်း သို့မဟုတ် ဆင်းသက်လာသော အငြင်းအခုံအမျိုးအစားများတွင် မူလအမျိုးအစားများ၏ အထက်တန်းကို ပြောင်းပြန်လှန်နိုင်စွမ်း (ကွဲလွဲမှု return type နှင့် argument type contravariance)။ အောက်ပါတည်ဆောက်မှုများကို PHP တွင်အသုံးပြုနိုင်ပါပြီ။

    အတန်းအစား A {}
    class B သည် A { } ကို တိုးချဲ့သည် ။

    အတန်းထုတ်လုပ်သူ {
    public function method(): A {}
    }
    အတန်းအစား ChildProducer သည် ထုတ်လုပ်သူ {
    public function method(): B {}
    }

  • array များအတွင်း “…$var” အော်ပရေတာများကို ထုပ်ပိုးခြင်း၊ ခွင့်ပြုခြင်း။ array အသစ်တစ်ခုကို သတ်မှတ်သောအခါ ရှိပြီးသား array များကို အစားထိုးလုပ်ဆောင်ပါ။

    $parts = ['ပန်းသီး'၊ 'သစ်တော်သီး'];
    $fruits = ['ငှက်ပျောသီး'၊ 'လိမ္မော်'၊ …$အပိုင်း၊ 'ဖရဲသီး'];
    // ['ငှက်ပျောသီး'၊ 'လိမ္မော်'၊ 'ပန်းသီး'၊ 'သစ်တော်သီး'၊ 'ဖရဲသီး'];

  • အခွင့်အရေး ကိန်းဂဏာန်းစာလုံးများ (1_000_000_00);
  • ထောက်ပံ့ အားနည်းသောလင့်များအရာဝတ္ထုတစ်ခုအား ကိုးကားချက်တစ်ခုအား ဆက်လက်ထိန်းသိမ်းထားရန် ခွင့်ပြုသော၊ သို့သော် ဆက်စပ်အရာဝတ္တုအား ဖျက်ခြင်းမှ အမှိုက်စုဆောင်းသူကို မပိတ်ဆို့ပါနှင့်။
  • အသစ်က ယန္တရား Object serialization (Serializable နှင့် __sleep()/__wakeup()) ပေါင်းစပ်ထားသော Serializable interface ကို ရပ်တန့်လိုက်မည့်၊

    // အရာဝတ္တု၏ ပြည်နယ်အားလုံးပါရှိသော ခင်းကျင်းတစ်ခုကို ပြန်ပေးသည်။
    public function __serialize(): array;

    // array တစ်ခုမှ အရာဝတ္ထုတစ်ခု၏ အခြေအနေကို ပြန်လည်ရယူသည်။
    public function __unserialize(array $data): ပျက်ပြယ်;

  • နည်းလမ်းတစ်ခုမှ ခြွင်းချက်ထားခွင့်ရှိသည်။ __toString();
  • အရာဝတ္ထုကုဒ် cache ကိုကြိုတင်တင်ခြင်းအတွက် ပံ့ပိုးမှု ထပ်ထည့်ထားသည်။ ဆက်တင်အတွက် ကန့်သတ်ချက်ထည့်ထားသည်။
    opcache.preloadဆာဗာစတင်သောအခါတွင် စုစည်းပြီး run မည့် PHP script ကို သင်သတ်မှတ်နိုင်သည်။ ဤ script သည် ၎င်းတို့၏ တိုက်ရိုက်ပါဝင်မှု သို့မဟုတ် opcache_compile_file() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ အခြားဖိုင်များ၏ opcode ကို တင်နိုင်သည်။

  • Castagnoli polynomial ကိုအသုံးပြု၍ checksums များကိုတွက်ချက်ရန် Hash extension တွင် crc32c လုပ်ဆောင်ချက်ကို ထည့်သွင်းထားသည်။
  • PHP ကို ​​libargon မပါဘဲ တည်ဆောက်ပါက Sodium စာကြည့်တိုက်ကို အကောင်အထည်ဖော်ရာတွင် စကားဝှက် hashing နည်းလမ်းများအတွက် argon2i နှင့် argin2id ၏ password_hash() လုပ်ဆောင်ချက်တွင် ပံ့ပိုးမှုထပ်ဖြည့်ထားသည်။
  • ထည့်ထားသောလုပ်ဆောင်ချက် mb_str_split(), str_split() နှင့် ဆင်တူသော်လည်း ဘိုက်များဖြင့် လုပ်ဆောင်ခြင်းမဟုတ်ဘဲ multi-byte string တစ်ခုရှိ ဇာတ်ကောင်နေရာများနှင့် လုပ်ဆောင်ခြင်း၊
  • strip_tags() function သည် ယခုအခါ tag အမည်များဖြင့် array တစ်ခုကို ဖြတ်သန်းနိုင်ပြီဖြစ်သည်၊ ဆိုလိုသည်မှာ၊ strip_tags($str, ' ') အစား ယခု strip_tags($str, ['a', 'p']);
  • proc_open() သည် လည်ပတ်ရန် string တစ်ခုထက် array တစ်ခုတွင် စာရင်းသွင်းရန် ခွင့်ပြုထားပြီး null file descriptor အတွက် thread redirection နှင့် support ကိုလည်း ပံ့ပိုးပေးပါသည်။

    proc_open(['php'၊ '-r'၊ 'echo "Hello World\n";']၊ $descriptors၊ $pipes);

    // shell တွင် 2>&1 ကဲ့သို့ဖြစ်သည်။
    proc_open($cmd၊ [1 => ['pipe'၊ 'w'], 2 => ['redirect', 1]], $pipes);

    // shell တွင် 2>/dev/null သို့မဟုတ် 2>nul ကဲ့သို့ဖြစ်သည်။
    proc_open($cmd၊ [1 => ['pipe'၊ 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase၊ Recode နှင့် WDDX တိုးချဲ့မှုများကို အခြေခံဖြန့်ဖြူးမှုမှ ဖယ်ထုတ်ထားသည်။ ဤတိုးချဲ့မှုများကို PECL မှတဆင့် ဖြန့်ဝေထားပါသည်။
  • အမျိုးအစားသို့ လွှဲပြောင်းခဲ့သည်။ ခေတ်မမီတော့ပါ။ ကွင်းစဥ်မပါသော nested ternary operator များ၊ curly braces (“$var{$idx}”)၊ is_real() function နှင့် parent keyword ကို parent class မပါပဲ၊ parameter allow_url_configurations များအသုံးပြု၍ array element များနှင့် strings များကို ဝင်ရောက်ခြင်းကဲ့သို့သော အင်္ဂါရပ်များ အရာဝတ္ထုများပေါ်တွင် array_key_exists() ကိုအသုံးပြုသည်။

    လုပ်ဆောင်ချက်များသည် get_magic_quotes_gpc(), get_magic_quotes_runtime(), နှင့်
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString()။

    လုပ်ဆောင်ချက်များတွင် မမှန်ကန်သော သင်္ကေတများကို လုပ်ဆောင်ရန် ကြိုးပမ်းသည့်အခါ အသုံးမပြုတော့သည့် အင်္ဂါရပ်ကို အသုံးပြုခြင်းနှင့် ပတ်သက်၍ သတိပေးချက် ပေးထားသည်။
    base_convert(), bindec(), octdec() နှင့် hexdec(), နှင့် mb_ereg_replace() တွင် လိုင်းမဟုတ်သောပုံစံကို သတ်မှတ်သည့်အခါ။

source: opennet.ru

မှတ်ချက် Add