PHP/is subclass of
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
تتحقق الدالة is_subclass_of()
فيما إذا كان يملك الكائن صنفًا ما كواحد من الأصناف الآباء له أو ينفذه.
الوصف
bool is_subclass_of ( mixed $object , string $class_name [, bool $allow_string = TRUE ] )
تتحقق الدالة is_subclass_of()
فيما إذا كان الصنف class_name
هو واحد من الأصناف الآباء للكائن object
.
المعاملات
object
اسم الصنف أو نسخة الكائن. لن يولَّد خطأ إذا لم يكن الصنف موجودًا.
class_name
اسم الصنف.
allow_string
إذا ضُبِطَت قيمة هذا المعامل إلى القيمة FALSE
، فلا يُسمح عندئذٍ باستخدام اسم صنف على شكل سلسلة نصية كقيمة للمعامل object
. يمنع هذا أيضًا استدعاء autoloader
إذا لم يكن الصنف موجودًا.
القيم المعادة
تُعيد الدالة is_subclass_of()
القيمة TRUE
إذا كان الكائن object
ينتمي إلى صنف هو صنف فرعي من الصنف class_name
، وإلاّ فإنها تُعيد القيمة FALSE
.
سجل التغييرات
الإصدار | الوصف |
5.3.9 | أُضيف المعامل allow_string .
|
5.3.7 | أُضيف دعم إلى class_name ليعمل مع الواجهات.
|
5.0.3 | يمكنك تحديد المعامل object بسلسلة نصية (اسم الصنف).
|
أمثلة
المثال 1: مثال عن استخدام الدالة is_subclass_of()
<?php
// تعريف صنف
class WidgetFactory
{
var $oink = 'moo';
}
// تعريف صنف ابن
class WidgetFactory_Child extends WidgetFactory
{
var $oink = 'oink';
}
// تعريف كائن جديد
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();
if (is_subclass_of($WFC, 'WidgetFactory')) {
echo "yes, \$WFC is a subclass of WidgetFactory\n";
} else {
echo "no, \$WFC is not a subclass of WidgetFactory\n";
}
if (is_subclass_of($WF, 'WidgetFactory')) {
echo "yes, \$WF is a subclass of WidgetFactory\n";
} else {
echo "no, \$WF is not a subclass of WidgetFactory\n";
}
// PHP 5.0.3قابل للاستخدام فقط منذ الإصدار
if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
echo "yes, WidgetFactory_Child is a subclass of WidgetFactory\n";
} else {
echo "no, WidgetFactory_Child is not a subclass of WidgetFactory\n";
}
?>
سينتج المثال السابق الناتج الآتي:
yes, $WFC is a subclass of WidgetFactory
no, $WF is not a subclass of WidgetFactory
yes, WidgetFactory_Child is a subclass of WidgetFactory
المثال 2: مثال عن استخدام الدالة is_subclass_of()
مع واجهة
<?php
// تعريف الواجهة
interface MyInterface
{
public function MyFunction();
}
// تعريف تنفيذ الصنف للواجهة
class MyClass implements MyInterface
{
public function MyFunction()
{
return "MyClass Implements MyInterface!";
}
}
// نسخ الكائن
$my_object = new MyClass;
// يعمل منذ الاصدار 5.3.7
// اختبار استخدام نسخة الكائن للصنف
if (is_subclass_of($my_object, 'MyInterface')) {
echo "Yes, \$my_object is a subclass of MyInterface\n";
} else {
echo "No, \$my_object is not a subclass of MyInterface\n";
}
// اختبار استخدام السلسلة النصية لاسم الصنف
if (is_subclass_of('MyClass', 'MyInterface')) {
echo "Yes, MyClass is a subclass of MyInterface\n";
} else {
echo "No, MyClass is not a subclass of MyInterface\n";
}
?>
سينتج المثال السابق الناتج الآتي:
Yes, $my_object is a subclass of MyInterface
Yes, MyClass is a subclass of MyInterface
ملاحظات
ملاحظة: عند استخدام هذه الدالة ستُستخدَم أيّة تحميلات تلقائية autoloaders
مُسجلة إذا لم يكن الصنف مُعرَّفًا من قبل.
انظر أيضًا
- الدالة
get_class()
: إعادة اسم الصنف لكائن. - الدالة
get_parent_class()
: الحصول على اسم الصنف الأب لكائن أو لصنف. - الدالة
is_a()
: التحقق فيما إذا كان الكائن من صنفٍ ما أو يملك ذاك الصنف كواحد من الأصناف الآباء له. - الدالة
class_parents()
: إعادة الأصناف الآباء للصنف المُعطى.