PHP ၏ရောင်ပြန်ဟပ်မှုယန္တရားသည် developer များကိုအတန်းများ, interfaces, functions များ, functions များ, အရိုးရှင်းဆုံးပုံသက်သေကိုပေးရန်ကျွန်ုပ်တို့သည်အချို့သောလူတန်းစားနည်းစနစ်၏ parameter method ကိုရယူရန် replementmethod ကို သုံးနိုင်သည်။
<code> $ method = reploodmethod (MyClass :: Class, 'MyMethod'); $ params = $ method-> getarameters (); </ code>ဆိုလိုသည်မှာနည်းလမ်း၏ parameters နာအမည်, အမျိုးအစားအချက်များစသဖြင့် parameters များ, အမည်, ရိုက်ရန်အချက်များစသည်တို့ကိုသိရှိနိုင်သည်။ သို့သော်၎င်းသည်အမျိုးအစားစိစစ်အတည်ပြုခြင်းကိုအလိုအလျောက်လုပ်ဆောင်လိမ့်မည်မဟုတ်ပါ။
is_a () သည်အရာဝတ်ထုတစ်ခုသည် Runtime တွင်လူတန်းစားတစ်ခုသို့မဟုတ်၎င်း၏ subclass ကိုဆုံးဖြတ်သည်ဖြစ်စေဆုံးဖြတ်သည့် function တစ်ခုဖြစ်သည်။ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
<code> is_a ($ object, $ classname, $ false = false = false) </ code>၎င်း၏အားသာချက်သည်၎င်း၏ခိုင်မာသည့်တက်ကြွလှုပ်ရှားမှုဖြစ်ပြီးအထူးသဖြင့်စစ်ဆေးမှုစစ်ဆေးရန်အတွက်ရောင်ပြန်ဟပ်မှုယန္တရားနှင့်အသုံးပြုရန်သင့်လျော်သည်။
ကျွန်ုပ်တို့သည် parameter များကိုအလိုအလျောက်ထိုးသွင်းရန်အတွက်အလိုအလျှောက်ထိုးသွင်းရန်အတွက်တာဝန်ရှိသည့်မှီခိုသောဆေးထိုးပါ 0 င်သည့်ကွန်တိန်နာကိုတည်ဆောက်နေသည်ဆိုပါစို့။ လုံခြုံရေးအကြောင်းပြချက်များအရကျွန်ုပ်တို့သည်ထိုးသွင်းထားသောအရာဝတ်ထုသည်နည်းလမ်းဖြင့်သတ်မှတ်ထားသောအမျိုးအစားအကန့်အသတ်များကိုလိုက်နာရန်သေချာစေလိုသည်။
တိကျစွာအမျိုးအစားစစ်ဆေးခြင်းကိုအကောင်အထည်ဖော်ရန် Refletion + is_a ကိုအသုံးပြုခြင်း၏ဥပမာတစ်ခုဖြစ်သည်။
<code> function invokewithdemperthementies ($ classname, $ mapodnamame, array array array array) {$ refmethod = reformethod = $ classname, $ startname); $ params = $ refmetheod-> GetParameters (); $resolvedParams = [];
foreach ($params as $param) {
$paramType = $param->getType();
if ($paramType && !$paramType->isBuiltin()) {
$expectedClass = $paramType->getName();
$matched = false;
foreach ($dependencies as $dep) {
if (is_object($dep) && is_a($dep, $expectedClass)) {
$resolvedParams[] = $dep;
$matched = true;
break;
}
}
if (!$matched) {
throw new InvalidArgumentException("No matching dependency for parameter \${$param->getName()} of type $expectedClass");
}
} else {
// Non- အရာဝတ်ထုအမျိုးအစား,default တန်ဖိုးများကိုကျော်သွားပါသို့မဟုတ်အသုံးပြုပါ
$resolvedParams[] = $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null;
}
}
return $refMethod->invokeArgs(new $className(), $resolvedParams);
}
</ code>
ဤဥပမာတွင်ကျွန်ုပ်တို့သည်အရာဝတ်ထုကို ဒေါ်လာမှီခို ရေးရာနေရာများတွင်ရောင်ပြန်ဟပ်ခြင်းဖြင့်ရရှိသောနည်းလမ်း parameter အမျိုးအစားများကိုထင်ဟပ်စေရန်နှင့် is_a () ကိုအသုံးပြုသည်။ ကိုက်ညီမှုမရှိသောမှီခိုမှုကိုမတွေ့ပါကမတိုက်ဆိုင်မှုများနှင့်မတိုက်ဆိုင်မှုများဖြင့်ခေါ်ဆိုမှုများကိုရှောင်ရှားရန်ခြွင်းချက်တစ်ခုကိုပစ်ချလိုက်သည်။
မှီခိုသောဆေးထိုးကွန်တိန်နာနှင့်ပေါင်းစပ်သည် ။ 0 န်ဆောင်မှုကွန်တိန်နာတွင်ဥပမာတစ်ခုမှတ်ပုံတင်သည့်အခါ class name ကိုသိမ်းဆည်းထားပြီးဖုန်းခေါ်ဆိုသောအခါအလိုအလျောက်ထိုးသွင်း ခြင်း ။
processing interfaces နှင့်စိတ်တဇအတန်းများ - is_a () is_a () သည် interfaction and abstract classes များနှင့်သက်ဆိုင်သည်။
$ Allow_String ကိုသုံးပါ။ သတိထားပါ ။ string class names ကို enable လုပ်ထားတဲ့အတွက်ပြောင်းလွယ်ပြင်လွယ်ရှိသော်လည်းဖုန်းခေါ်ဆိုသူကိုမထိန်းချုပ်နိုင်ရင်လုံခြုံမှုကိုချိုးဖျက်ဖို့လွယ်ကူပါတယ်။