လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> is_a () ကိုသုံးရန် is_a () ကိုသုံးပါ

is_a () ကိုသုံးရန် is_a () ကိုသုံးပါ

M66 2025-05-29

Daily Php Development တွင် variable သည်တိကျသောလူတန်းစားတစ်ခု၏ဥပမာတစ်ခုရှိမရှိကိုကျွန်ုပ်တို့မကြာခဏအတည်ပြုရန်လိုအပ်သည်။ PHP သည် Instanceof Operator, is_a () functions is is_a () function သည်ပထမဆုံးသောရွေးချယ်မှုတစ်ခုဖြစ်လာသော်လည်း PHP သည်တရားစီရင်ခြင်းအမျိုးအစားများကိုပေးသော်လည်း developer များနှင့်ရိုးရှင်းမှုကြောင့်ပထမဆုံးရွေးချယ်မှုဖြစ်လာသည်။

ဤဆောင်းပါးသည် is_a () function ကို အခြေခံ. ရိုးရှင်းသောအမျိုးအစားစစ်ဆေးမှုကိရိယာအတန်းကိုတည်ဆောက်ရန်,

1 ။ is_a () function ကိုမိတ်ဆက်

is_a () သည် PHP မှပေးသော built-in function တစ်ခုဖြစ်ပြီးအရာဝတ်ထုတစ်ခုသည်အချို့သောလူတန်းစားတစ်ခုသို့မဟုတ်ထိုအတန်း၏ subclass ကိုပိုင်ဆိုင်သည်ကိုဆုံးဖြတ်ရန်အသုံးပြုသည်။

 bool is_a(object|string $object_or_class, string $class, bool $allow_string = false)
  • $ Office_or_Class : စစ်ဆေးရန်အရာဝတ်ထုသို့မဟုတ်အတန်းအစားအမည်။

  • $ အတန်း : ပစ်မှတ်အတန်းအစားအမည်။

  • $ Allow_String - အရာဝတ်ထုအမည်ကိုကြိုးကြိုးများဖြင့်ဖြတ်သန်းရန်ခွင့်ပြုသင့်သည် (static ခေါ်ဆိုမှုများအတွက်) ။

2 ။ TypeCheChecker Tool အတန်းကိုဖန်တီးပါ

Type Judge Judge Judge Judge Legic ကိုရိုးရှင်းစေရန်ရိုးရှင်းသောကိရိယာအတန်း cym cypechecker ကို လွယ်ကူစွာ encapsulate လုပ်ရန် is_a () function ကိုအသုံးပြုမည်။

 <code>
class TypeChecker
{
    /**
     * အရာဝတ်ထုသည်အချို့သောလူတန်းစား၏ဥပမာတစ်ခုရှိမရှိဆုံးဖြတ်ပါ
     *
     * @param object|string $objectOrClass
     * @param string $expectedClass
     * @param bool $allowString
     * @return bool
     */
    public static function isInstanceOf($objectOrClass, string $expectedClass, bool $allowString = false): bool
    {
        return is_a($objectOrClass, $expectedClass, $allowString);
    }

    /**
     * မျိုးစုံအရာဝတ်ထုအမျိုးအစားများကိုသုတ်သင်ရှင်းလင်းရေး
     *
     * @param array $objectsWithExpectedClasses
     * @return array
     */
    public static function validateMultiple(array $objectsWithExpectedClasses): array
    {
        $results = [];
        foreach ($objectsWithExpectedClasses as $label => [$objectOrClass, $expectedClass]) {
            $results[$label] = self::isInstanceOf($objectOrClass, $expectedClass);
        }
        return $results;
    }
}
</code>

ဤအတန်းသည်နည်းလမ်းနှစ်မျိုးကိုပေးသည်။

  • isinstanceof () - တစ်ခုတည်းသောအရာဝတ်ထုအမျိုးအစားကိုစစ်ဆေးပါ။

  • ReliverTeMultiple () - အရာဝတ်ထုနှင့်အတန်းများအကြားစာပေးစာယူကိုအသုတ်စစ်ဆေးခြင်းကိုထောက်ပံ့သည်။

3 ။ ဥပမာကိုသုံးပါ

အမှန်တကယ်စီမံကိန်းများတွင်ဤ tool အတန်းကိုမည်သို့အသုံးပြုသည်ကိုကြည့်ကြပါစို့။

 <code>
interface LoggerInterface {}
class FileLogger implements LoggerInterface {}
class MailLogger {}

$logger1 = new FileLogger();
$logger2 = new MailLogger();

// တစ်ခုတည်းစိစစ်အတည်ပြု
if (TypeChecker::isInstanceOf($logger1, LoggerInterface::class)) {
    echo "logger1 ဟုတ်ကဲ့ LoggerInterface ရာထူးဥပမာ\n";
}

// အတည်ပြုစိစစ်အတည်ပြု
$results = TypeChecker::validateMultiple([
    'fileLogger' => [$logger1, LoggerInterface::class],
    'mailLogger' => [$logger2, LoggerInterface::class],
]);

print_r($results);
</code>

output ရလဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 logger1 ဟုတ်ကဲ့ LoggerInterface ရာထူးဥပမာ
Array
(
    [fileLogger] => 1
    [mailLogger] => 
)

4 ။ လက်တွေ့အခြေအနေ - လုံခြုံရေးစက်ရုံကိုရိုက်ပါ

Configuration file မှအတန်းကိုတက်ကြွစွာဖွင့်ပြီးအရာဝတ်ထုကိုအလျင်အမြန်ဖွင့်ပြီးအရာဝတ်ထုကိုအလျင်အမြန်ဖွင့်သည်ဆိုပါစို့။ ဤအတန်းများသည်အလိုရှိသော interface ကိုအကောင်အထည်ဖော်ရန်နှင့် runtime တွင်အမှားအယွင်းများကိုရှောင်ရှားရန်သေချာစေရန် cymeechecker ကို သင်အသုံးပြုနိုင်သည်။

 <code>
class LoggerFactory
{
    public static function create(string $className): LoggerInterface
    {
        $instance = new $className();

        if (!TypeChecker::isInstanceOf($instance, LoggerInterface::class)) {
            throw new InvalidArgumentException("အမျိုးအစား $className အောင်မြင်ရမည်ဖြစ်သည် LoggerInterface ထိသိျက်နှာ");
        }

        return $instance;
    }
}

$logger = LoggerFactory::create('FileLogger'); // ပုံမှန်ဖြစ်သော
$logger = LoggerFactory::create('MailLogger'); // ခြွင်းချက်ပစ်
</code>

5 ။ အကျဉ်းချုပ်

ရိုးရှင်းသောအမျိုးအစားစိစစ်အတည်ပြုကိရိယာအတန်းကို is_a () ကို conclary accapsuling encapsulating encapsuls encapsuls encapsult သည် code ၏ကြံ့ခိုင်ခြင်းနှင့်ဖတ်နိုင်မှုကိုများစွာတိုးတက်စေနိုင်သည်။ အသေးစားနှင့်အလတ်စားစီမံကိန်းများတွင်အခြေခံအမျိုးအစားရှာဖွေတွေ့ရှိမှုအတွက်ဖြစ်စေ, သို့မဟုတ်ကြီးမားသောမူဘောင်များတွင်လုံခြုံရေးစစ်ဆေးနေသည့်အလွှာတစ်ခုအနေဖြင့်၎င်းသည်အသုံးဝင်သည်။

အကယ်. သင်သည်ပြည့်စုံသောအတည်ပြုစနစ်ကိုထပ်မံတည်ဆောက်လိုပါက URL အရင်းအမြစ်နှင့်မှီခိုသောဆေးထိုးဆေးများကဲ့သို့သောယုတ္တိဗေဒများကိုအတည်ပြုနိုင်သည်။ ဥပမာအားဖြင့်, 0 န်ဆောင်မှုဆိုင်ရာ registry တွင် classify သည်လိုအပ်သော interface ကိုအကောင်အထည်ဖော်ရန်သို့မဟုတ်သတ်သတ်မှတ်မှတ်အခြေခံအကျဆုံးအမှားအယွင်းများကိုအမွေဆက်ခံသည်ဖြစ်စေ,