عملگر instanceof در php چیست؟
زمانی که شما از یک کلاس نمونه یا instance ایجاد میکنید، می توانید یک شی ایجاد شده از کلاس را آزمایش یا بررسی کنید، که آیا امکان تبدیل این شی به یک کلاس خاص وجود دارد یا خیر؟
با بررسی یک مثال عملی این موضوع را بیشتر توضیح خواهیم دادم.
ابتدا کلاسی با نام A ایجاد و سپس نمونه ای از آن با نام obj ایجاد خواهیم کرد.
class A {
// ...
}
$obj = new A();
if ($obj instanceof A) {
echo '$obj is instanceof A';
}
در شرط if با استفاده از عملگر instanceof بررسی میکنیم که آیا شی از نوع کلاس Test میباشد یا خیر. نتیجه این بررسی true یا false میباشد. در صورتی که آبجکت ما از نوع مورد نظر ما باشد مقدار true در غیر اینصورت مقدار false برگردانده میشود.
کاربرد instanceof در وراثت
همانطور که در قسمت ارث بری در php به نحوه ارث بری کلاس ها در php اشاره کردیم، اگر آبجکت ایجاد شده از کلاس دارای کلاس والد (کلاس parent) باشد، نتیجه instanceof باز هم مقدار true بر میگرداند.
در مثال بالا فرض میکنیم کلاس A از کلاسی به نام B ارث بری داشته باشد، در نتیجه مقدار instanceof از آبجکت obj هم برای A و هم برای B مقدار true می باشد.
class B {
// ...
}
class A extends B {
// ...
}
$obj = new A();
if ($obj instanceof A) {
echo '$obj is instanceof A';
}
if ($obj instanceof B) {
echo '$obj is instanceof B';
}
هر دو شرط مقدار true دارند، به دلیل آنکه کلاس A از کلاس B ارث بری کرده است.
در این قسمت از آموزش php سعی داشتیم نکتهای را در رابطه با عملگر instanceof ارائه کنیم تا توانسته باشیم که به درک کلی تری از زبان php برسیم. همچنین این قابلیت هایی که شاید کمتر از آنها استفاده میشود، در تکمیل شدن دانش شما در زبان php تاثیر دارد و باعث بهبود و ارتقا شما در این زبان میشود.