ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသောပရိုဂရမ်ဘာသာစကားတစ်ခုအနေဖြင့် PHP ၏အခြေခံလည်ပတ်မှုယန္တရားသည် developer များ၏အာရုံစူးစိုက်မှုကိုအမြဲအာရုံစိုက်သည်။ ဤဆောင်းပါးသည် PHP7 ၏အခြေခံဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာစည်းမျဉ်းများကိုအသေးစိတ်ဖော်ပြရန်နှင့် function calls နှင့် variable များကိုအကောင်အထည်ဖော်ရန်အာရုံစိုက်မည်။
PHP7 တွင် Function ခေါ်ဆိုမှုများကိုခေါ်ဆိုမှု stack မှတဆင့်စီမံခန့်ခွဲသည်။ ခေါ်ဆိုမှု stack သည် function name နှင့် parametersters ကဲ့သို့သော function name တစ်ခုစီတွင်သက်ဆိုင်ရာသတင်းအချက်အလက်များကိုချွေတာရန်နောက်ဆုံးပေါ် - ပထမ ဦး ဆုံး (lifo) ဒေတာတည်ဆောက်ပုံဖြစ်သည်။ လုပ်ဆောင်ချက်အရလုပ်ဆောင်ပြီးနောက်သက်ဆိုင်ရာသတင်းအချက်အလက်များကို stack ထိပ်မှဖယ်ရှားပစ်လိမ့်မည်။
ဤတွင် function call ၏ဥပမာတစ်ခုမှာ -
function foo($a, $b) {
return $a + $b;
}
$result = foo(1, 2);
Execute တွင်ခေါ်ဆိုမှု stack stack stack: call stack သည်ပရိုဂရမ်၏အစတွင်အချည်းနှီးဖြစ်သည်။ foo function ကိုခေါ်ဆိုသည့်အခါ function ကိုအချက်အလက်များကို stack ထိပ်သို့တွန်းပို့သည်။ လုပ်ဆောင်ချက်ပြီးသွားရင်သတင်းအချက်အလက်တွေဟာ stack ထိပ်ကနေပေါ်လာပြီးရလဒ်ကိုပြန်ပို့လိုက်တယ်။
PHP7 function ခေါ်ဆိုမှုများသည်လက်တွေ့ကျတဲ့အငြင်းအခုံပေးပို့မှုနည်းလမ်းများကိုထောက်ပံ့သည်။
ကိုးကားစရာ Passion ဥပမာ:
function foo(&$a) {
$a = 2;
}
$b = 1;
foo($b);
echo $b; // ထုတ်လုပ်ခြင်း2
function foo သည် $ b ၏လိပ်စာကိုလက်ခံရရှိသည်။ ထို့ကြောင့်တရားဝင် parameters များသည်ပုံမှန် parameters များပြုပြင်မွမ်းမံခြင်းသည်အမှန်တကယ် parameters များကိုတိုက်ရိုက်အကျိုးသက်ရောက်သည်။
PHP7 တွင် variable တစ်ခုတွင်သတ်မှတ်ခြင်းသည်မှတ်ဥာဏ်ကိုစီမံရန်ရည်ညွှန်းရေတွက်ခြင်းကိုအသုံးပြုသည်။ ကိုးကားစရာအရေအတွက်သည် variable တစ်ခုကိုရည်ညွှန်းထားသောအကြိမ်အရေအတွက်ကိုမှတ်တမ်းတင်ထားသည်။ အရေအတွက်သည်သုညသို့ပြန်လာသည့်အခါသက်ဆိုင်ရာမှတ်ဉာဏ်ကိုထုတ်ပြန်သည်။
တန်ဖိုးများကိုသတ်မှတ်သည့်အခါ variable ကိုကိုးကားထားသောအရေအတွက်သည် 1 ဖြစ်လျှင် variable တန်ဖိုးကိုတိုက်ရိုက်အသစ်ပြောင်းရမည်။ အကယ်. ၎င်းသည် 1 ထက်ကြီးပါကမူရင်းတန်ဖိုးကိုကူးယူပြီးတန်ဖိုးအသစ်ကိုသတ်မှတ်ပြီးမှတ်ဉာဏ်အဟောင်းကိုအမှိုက်သရိုက်များဖြင့်ပြုလုပ်လိမ့်မည်။
နမူနာကုဒ်:
$a = 1;
$b = $a;
$c = &$a;
echo $a, $b, $c; // ထုတ်လုပ်ခြင်း111
$a = 2;
echo $a, $b, $c; // ထုတ်လုပ်ခြင်း212
$ B, $ a နှင့် $ ခ-bet ကိုတူညီသောဒေတာကူးယူရန် $ ခညွှန်ပြသောအခါ; $ c သည် $ ကရည်ညွှန်းသည်။ $ a ကိုပြုပြင်သည့်အခါ $ c ကိုတစ်ပြိုင်တည်းညှိနှိုင်းသည်။
ကိုးကားစရာရေတွက်ခြင်းသည်စက်ဝိုင်းကိုးကားချက်များကိုမဖြေရှင်းနိုင်ပါ။ ဤအဆုံးတွင် PHP7 သည် tag-clean barbage collection ယန္တရားကိုမိတ်ဆက်ပေးသည်။
variable ကိုကိုးကားအရေအတွက်သုညဖြစ်သည့်အခါ၎င်းကိုအမှိုက်သရိုက်များအဖြစ်မှတ်သားလိမ့်မည်။ အမှိုက်သရိုက်စုဆောင်းမှုယန္တရားသည် Root rols set ကိုဖြတ်သန်းခြင်း (ဥပမာကမ္ဘာလုံးဆိုင်ရာ variable များနှင့်ဒေသခံ variable များ) ကိုဖြတ်သန်းခြင်းဖြင့်ရောက်ရှိနိုင်သောအရာများကိုအမှတ်အသားပြုသည်။ အမှတ်အသားမရှိသောအမှိုက်များသည်အမှိုက်သရိုက်ဖြစ်ပြီး၎င်းကိုမှတ်ဉာဏ်လွတ်စေသည်။
စက်ဝိုင်းရည်ညွှန်းခြင်းဥပမာ -
class A {
public $b;
}
class B {
public $a;
}
$a = new A;
$b = new B;
$a->b = $b;
$b->a = $a;
unset($a, $b);
ဤတွင်ဒေါ်လာ A နှင့် $ B သည်တစ် ဦး ကိုတစ် ဦး ရည်ညွှန်းသည်။ unset ကွပ်မျက်ခံရပြီးနောက်အမှိုက်သရိုက်စုဆောင်းမှုယန္တရားသည်လက်လှမ်းမမီသောမြို့ပတ်ရထားကိုးကားချက်များကိုရှာဖွေတွေ့ရှိပြီးမှတ်ဥာဏ်ကိုအချိန်မီပြန်လည်အသုံးပြုသည်။
PHP7 ၏နောက်ခံဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာအခြေခံမူများကိုနက်နက်ရှိုင်းရှိုင်းနားလည်မှုသည်အထူးသဖြင့် function call နှင့် variable assignment ယန္တရားသည် PHP ဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာစွမ်းဆောင်ရည်နှင့်စွမ်းဆောင်ရည်ပိုမိုကောင်းမွန်စေရန်အလွန်အရေးကြီးသည်။ ဤဆောင်းပါးသည်ခေါ်ဆိုမှု stack ၏စီမံခန့်ခွဲမှု, အမှန်တကယ် parameter ဖြန့်ဝေနည်းလမ်းများ, ရည်ညွှန်းရေတွက်ခြင်းနှင့်အမှိုက်သရိုက်များစုဆောင်းခြင်းယန္တရားကိုအဓိကထားသည်။