Object-Oriented PHP applications များကိုတီထွင်သောအခါအရာဝတ်ထုများကိုနှိုင်းယှဉ်ရန်နှင့်သူတို့တန်းတူရှိမရှိဆုံးဖြတ်ရန်မကြာခဏလိုအပ်သည်။ ဤဆောင်းပါးသည်အရာဝတ္ထုများကို PHP ရှိအရာဝတ်ထုများကိုနှိုင်းယှဉ်ခြင်းနှင့်၎င်းတို့နောက်ကွယ်ရှိအခြေခံမူများကိုလေ့လာနိုင်သည့်ကွဲပြားခြားနားသောနည်းလမ်းများကိုလေ့လာလိမ့်မည်။
PHP တွင်ကျွန်ုပ်တို့သည် (ဥပမာ - ==,! ==, ==, ==, ==, ==, ==) ကိုသုံးနိုင်သည်။ ဤအော်ပရေတာများသည်အမျိုးအစားနှစ်မျိုးတူပင်ဖြစ်မှုရှိမရှိ, အထူးသဖြင့်:
== : အရာဝတ်ထုနှစ်ခုရဲ့ attribute တန်ဖိုးများတန်းတူရှိမရှိဆုံးဖြတ်သည်။
! = - အရာဝတ်ထုနှစ်ခု၏ attribute တန်ဖိုးများကိုတန်းတူမဟုတ်လားဆိုတာဆုံးဖြတ်သည်။
=== : အရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုများဟုတ်မဟုတ်ဆုံးဖြတ်ရန်။
! == : အရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုမဟုတ်လားဆိုတာဆုံးဖြတ်ရန်။
== အော်ပရေတာသည်ပစ္စည်းဥစ်စာနှစ်ခုအနက်မှပစ္စည်းတန်ဖိုးများကိုနှိုင်းယှဉ်ရန်အသုံးပြုသည်။ အရာဝတ်ထုနှစ်ခု၏ attribute တန်ဖိုးများတန်းတူဖြစ်လျှင်,
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = 'Zhang San';
$obj1->age = 20;
$obj2->name = 'Zhang San';
$obj2->age = 20;
if ($obj1 == $obj2) {
echo 'နှစ်ခုအရာဝတ်ထုတန်းတူဖြစ်ကြသည်';
} else {
echo 'နှစ်ခုအရာဝတ်ထုတန်းတူကြသည်မဟုတ်';
}
အထက်ပါကုဒ်တွင် PROMCLASS ၏အရာဝတ်ထုနှစ်ခုကိုကျွန်ုပ်တို့ဖန်တီးထားသောကြောင့်အိမ်ခြံမြေတန်ဖိုးရှိသည့်တန်ဖိုးရှိသည့်အရာဖြစ်သည်။
! = အရာဝတ်ထုနှစ်ခု၏ attribute တန်ဖိုးများသည်တန်းတူမဟုတ်လော။ attribute တန်ဖိုးများတန်းတူမဟုတ်လျှင်စစ်မှန်သောပြန်လာပါက,
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = 'Zhang San';
$obj1->age = 20;
$obj2->name = 'li si';
$obj2->age = 30;
if ($obj1 != $obj2) {
echo 'နှစ်ခုအရာဝတ်ထု၏ attribute တန်ဖိုးများတန်းတူမဟုတ်ကြဘူး';
} else {
echo 'နှစ်ခုအရာဝတ်ထု၏ attribute တန်ဖိုးများတန်းတူဖြစ်ကြသည်';
}
ဤဥပမာတွင် attribute တန်ဖိုးများကို itf1 နှင့် $ obj2 ကွဲပြားခြားနားသောကြောင့် output ရလဒ်သည် "အရာဝတ်ထုနှစ်ခု၏ attribute တန်ဖိုးများသည်တန်းတူမဟုတ်ပါ။ "
The === operator သည်အရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုတစ်ခုဖြစ်သည်ဖြစ်စေနှိုင်းယှဉ်ရန်အသုံးပြုသည်။ အရာဝတ်ထုနှစ်ခုသည်အရာဝတ်ထုနှစ်ခုကိုမှတ်ဉာဏ်လိပ်စာတစ်ခုတည်းကိုသာညွှန်ပြမှသာလျှင်သာပြန်လာပါ။
$obj1 = new stdClass();
$obj2 = $obj1;
if ($obj1 === $obj2) {
echo 'နှစ်ခုအရာဝတ်ထုတူညီတဲ့အရာဝတ်ထုဖြစ်ကြသည်';
} else {
echo 'နှစ်ခုအရာဝတ်ထုတူညီသောအရာဝတ်ထုမဟုတ်ပါဘူး';
}
ဤကုဒ်နံပါတ်တွင် UBJ2 သည်ဒေါ်လာ OBJ2 မှဒေါ်လာ OBJ1 ၏မှတ်ဉာဏ်လိပ်စာကိုညွှန်ပြသောကြောင့် output သည် "အရာဝတ်ထုနှစ်ခု" ဖြစ်သည်။
အဆိုပါ! == အော်ပရေတာသည် === operator ၏အချိုးကျဆင်ခြင်းတစ်ခုဖြစ်သည်။ ဆိုလိုသည်မှာအရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုမဟုတ်လော။ ကွဲပြားခြားနားသောမှတ်ဥာဏ်လိပ်စာများကိုအရာဝတ်ထုနှစ်ခုကိုညွှန်ပြပါကအရာ 0 တ်ထုနှစ်ခုကိုအမှတ်အသားပြုပါ။
$obj1 = new stdClass();
$obj2 = $obj1;
$obj3 = new stdClass();
if ($obj1 !== $obj3) {
echo 'နှစ်ခုအရာဝတ်ထုတူညီသောအရာဝတ်ထုမဟုတ်ပါဘူး';
} else {
echo 'နှစ်ခုအရာဝတ်ထုတူညီတဲ့အရာဝတ်ထုဖြစ်ကြသည်';
}
ဤဥပမာတွင် $ Obj1 နှင့် $ obj3 သည်မတူညီသောအရာဝတ်ထုနှစ်ခုဖြစ်ပြီး output သည် "အရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုမဟုတ်" ဖြစ်သည်။
PHP တွင်အရာဝတ်ထုများကိုနှိုင်းယှဉ်ပါက object များကို အသုံးပြု. အရာဝတ်ထုများကိုနှိုင်းယှဉ်လျှင်အရာဝတ်ထုသည်အရာဝတ်ထုကိုနှိုင်းယှဉ်မှုအတွက် string တစ်ခုအဖြစ်ပြောင်းလဲရန်အရာဝတ်ထု၏ __tostring () နည်းလမ်းကိုအလိုအလျောက်ခေါ်ဆိုလိမ့်မည်။ အကယ်. အရာဝတ်ထုသည်ဤနည်းလမ်းကိုအကောင်အထည်မ 0 င်ပါက PHP သည် "Catchable Fatal Error" အမှားတစ်ခုရှိသည်။
အကယ်. အရာဝတ်ထုသည် __tostring () နည်းလမ်းကိုအကောင်အထည်ဖော်ပါကဤနည်းလမ်းကိုအရာဝတ်ထုကို string တစ်ခုသို့ပြောင်းလဲပြီးနှိုင်းယှဉ်ခြင်းဟုခေါ်သည်။ အရာဝတ်ထုများကိုနှိုင်းယှဉ်သောအခါအရာ 0 တ်ထုများကိုနှိုင်းယှဉ်သောအခါအရာဝတ်ထု၏ပိုင်ဆိုင်မှုတန်ဖိုးများကိုသာထည့်သွင်းစဉ်းစားခြင်းနှင့်နည်းလမ်းများမပါ 0 င်ကြောင်းသတိပြုသင့်သည်။ ဒါကြောင့်အရာဝတ်ထုနှစ်ခုမှာတူညီတဲ့ပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုတန်ဖိုးရှိသော်လည်းကွဲပြားခြားနားသောနည်းလမ်းများ, PHP ကသူတို့ကိုတန်းတူစဉ်းစားနေဆဲဖြစ်သည်။
ဤဆောင်းပါးသည် PHP တွင်အရာဝတ်ထုများနှင့်၎င်းတို့၏နောက်ကွယ်ရှိအခြေခံမူများကိုမည်သို့နှိုင်းယှဉ်ရမည်ကိုဆွေးနွေးထားသည်။ နှိုင်းယှဉ်ပါက operator ကိုမှန်ကန်စွာအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အရာဝတ်ထုနှစ်ခု၏တန်းတူညီမျှမှုကိုထိရောက်စွာတရားစီရင်နိုင်ပြီး၎င်းတို့သည်တူညီသောအရာဝတ်ထုရှိမရှိကိုထိရောက်စွာဆုံးဖြတ်နိုင်သည်။