الفرق بين المراجعتين لصفحة: «PHP/get class»

من موسوعة حسوب
< PHP
لا ملخص تعديل
 
(2 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 2: سطر 2:
(PHP 4, PHP 5, PHP 7)
(PHP 4, PHP 5, PHP 7)


تُعيد الدالة  <code>get_class()</code>‎‎‎‎‎‎‎‎  اسم الصنف لكائن <code>object</code>.
تُعيد الدالة  <code>get_class()</code>‎‎‎‎‎‎‎‎ اسم الصنف لكائن <code>object</code>.


== الوصف ==
== الوصف ==
سطر 15: سطر 15:
=== <code>object</code> ===
=== <code>object</code> ===
اسم الكائن المُختبر. من الممكن أن يُحذف هذا المعامل عندما يتم استخدام الدالة <code>get_class()</code>‎  داخل صنف ما.
اسم الكائن المُختبر. من الممكن أن يُحذف هذا المعامل عندما يتم استخدام الدالة <code>get_class()</code>‎  داخل صنف ما.
{| class="wikitable"
|ملاحظة: لم يعُد التمرير الصريح للقيمة <code>NULL</code>  كقيمة للمعامل <code>object</code> مسموحًا بدءًا من الإصدار  PHP 7.2.0.
و لكن لا يزال المعامل <code>object</code>  اختياري، وسيعمل استدعاء الدالة <code>get_class()‎</code>  بدون المعامل  <code>object</code> من داخل صنف ما،
ولكن سيولد  تمرير <code>NULL</code>  التحذير  <code>E_WARNING</code>.
|}


ملاحظة: لم يعُد التمرير الصريح للقيمة <code>NULL</code> كقيمة للمعامل <code>object</code> مسموحًا بدءًا من الإصدار PHP 7.2.0. ولكن لا يزال المعامل <code>object</code> اختياريًا، وسيعمل استدعاء الدالة <code>get_class()‎</code>  بدون المعامل <code>object</code> من داخل صنف ما، ولكن سيولد  تمرير <code>NULL</code> التحذير <code>E_WARNING</code>.
== القيم المعادة ==
== القيم المعادة ==
تُعيد الدالة <code>get_class()</code>‎‎‎‎‎‎‎‎ اسم الصنف الذي يكون الكائن <code>object</code> نسخة منه. وستعيد الدالة القيمة <code>FALSE</code>  إذا كان <code>object</code> ليس بكائن.
تُعيد الدالة <code>get_class()</code>‎‎‎‎‎‎‎‎ اسم الصنف الذي يكون الكائن <code>object</code> نسخة منه. وستعيد الدالة القيمة <code>FALSE</code>  إذا كان <code>object</code> ليس بكائن.
سطر 29: سطر 24:
و في حال كان المعامل <code>object</code> هو نسخة لصنف موجود في مجال أسماء، ستُعيد الدالة الاسم المُكافئ لاسم الصنف من مجال الأسماء.
و في حال كان المعامل <code>object</code> هو نسخة لصنف موجود في مجال أسماء، ستُعيد الدالة الاسم المُكافئ لاسم الصنف من مجال الأسماء.


== الأخطاء و الاستثناءات ==
== الأخطاء والاستثناءات ==
عند استدعاء الدالة <code>get_class()</code>‎ بمعامل ليس بكائن ،سيظهر مستوى الخطأ <code>E_WARNING</code>.
عند استدعاء الدالة <code>get_class()</code>‎ بمعامل ليس بكائن ،سيظهر مستوى الخطأ <code>E_WARNING</code>.


== سجل التغييرات ==
== سجل التغييرات ==
{| class="wikitable"
{| class="wikitable"
|الإصدار
!الإصدار
|الوصف
!الوصف
|-
|-
|7.2.0
|7.2.0
| إزالة <code>NULL</code> كقيمة افتراضية للمعامل <code>object</code>، و لم يعد بعد ذلك قيمة متاحة.
|إزالة <code>NULL</code> كقيمة افتراضية للمعامل <code>object</code>، و لم يعد بعد ذلك قيمة متاحة.
|-
|-
|5.3.0
|5.3.0
| أصبحت <code>NULL</code>  قيمة افتراضية للمعامل <code>object</code>، أي أصبح تمرير القيمة <code>NULL</code> للمعامل <code>object</code> يملك نفس نتيجة عدم تمرير أية قيمة.
|أصبحت <code>NULL</code>  قيمة افتراضية للمعامل <code>object</code>، أي أصبح تمرير القيمة <code>NULL</code> للمعامل <code>object</code> يملك نفس نتيجة عدم تمرير أية قيمة.
|}
|}


سطر 60: سطر 55:
$bar->name();
$bar->name();
?>
?>
</syntaxhighlight>سينتج المثال السابق الناتج الآتي:<syntaxhighlight>
</syntaxhighlight>سينتج المثال السابق الناتج الآتي:<syntaxhighlight lang="text">
Its name is foo
Its name is foo
My name is foo
My name is foo
سطر 76: سطر 71:
new foo;
new foo;
?>
?>
</syntaxhighlight>سينتج المثال السابق الناتج الآتي:<syntaxhighlight>
</syntaxhighlight>سينتج المثال السابق الناتج الآتي:<syntaxhighlight lang="text">
string(3) "foo"
string(3) "foo"
string(3) "bar"
string(3) "bar"
سطر 91: سطر 86:
var_dump(get_class($baz));
var_dump(get_class($baz));
?>
?>
</syntaxhighlight>سينتج المثال السابق الناتج الآتي:<syntaxhighlight>
</syntaxhighlight>سينتج المثال السابق الناتج الآتي:<syntaxhighlight lang="text">
string(11) "Foo\Bar\Baz"
string(11) "Foo\Bar\Baz"
</syntaxhighlight>
</syntaxhighlight>


== انظر أيضًا ==
== انظر أيضًا ==
* الدالة <code>[[PHP/get called class|get_called_class()]]</code>‎‎‎‎‎‎:إعادة اسم صنف الروابط الساكنة المتأخرة (Late Static Binding).
* الدالة <code>[[PHP/get called class|get_called_class()]]</code>‎‎‎‎‎‎: إعادة اسم صنف [[PHP/late static bindings|الروابط الساكنة المتأخرة]] (Late Static Binding).
* الدالة <code>[[PHP/get parent class|get_parent_class()]]</code>‎: الحصول على اسم الصنف الأب لكائن أو لصنف.
* الدالة <code>[[PHP/get parent class|get_parent_class()]]</code>‎: الحصول على اسم الصنف الأب لكائن أو لصنف.
* الدالة <code>[[PHP/gettype|gettype()]]‎‎‎‎‎‎</code>: الحصول على نوع المتغير.
* الدالة <code>[[PHP/gettype|gettype()]]‎‎‎‎‎‎</code>: الحصول على نوع المتغير.

المراجعة الحالية بتاريخ 03:17، 16 أبريل 2018

(PHP 4, PHP 5, PHP 7)

تُعيد الدالة  get_class()‎‎‎‎‎‎‎‎ اسم الصنف لكائن object.

الوصف

string get_class ([ object $object ] )

تحصل الدالة get_class()‎‎‎‎‎‎‎‎ على اسم الصنف للكائن المُعطى object.

المعاملات

object

اسم الكائن المُختبر. من الممكن أن يُحذف هذا المعامل عندما يتم استخدام الدالة get_class()‎  داخل صنف ما.

ملاحظة: لم يعُد التمرير الصريح للقيمة NULL كقيمة للمعامل object مسموحًا بدءًا من الإصدار PHP 7.2.0. ولكن لا يزال المعامل object اختياريًا، وسيعمل استدعاء الدالة get_class()‎  بدون المعامل object من داخل صنف ما، ولكن سيولد  تمرير NULL التحذير E_WARNING.

القيم المعادة

تُعيد الدالة get_class()‎‎‎‎‎‎‎‎ اسم الصنف الذي يكون الكائن object نسخة منه. وستعيد الدالة القيمة FALSE  إذا كان object ليس بكائن.

في حال كان المعامل object  مُلغى عند استدعاء الدالة  داخل صنف، ستعيد الدالة اسم هذا الصنف.

و في حال كان المعامل object هو نسخة لصنف موجود في مجال أسماء، ستُعيد الدالة الاسم المُكافئ لاسم الصنف من مجال الأسماء.

الأخطاء والاستثناءات

عند استدعاء الدالة get_class()‎ بمعامل ليس بكائن ،سيظهر مستوى الخطأ E_WARNING.

سجل التغييرات

الإصدار الوصف
7.2.0 إزالة NULL كقيمة افتراضية للمعامل object، و لم يعد بعد ذلك قيمة متاحة.
5.3.0 أصبحت NULL  قيمة افتراضية للمعامل object، أي أصبح تمرير القيمة NULL للمعامل object يملك نفس نتيجة عدم تمرير أية قيمة.

أمثلة

المثال 1: مثال عن استخدام الدالة get_class()‎

<?php
class foo {
    function name()
    {
        echo "My name is " , get_class($this) , "\n";
    }
}
//إنشاء كائن‏
$bar = new foo();
//استدعاء خارجي‏
echo "Its name is " , get_class($bar) , "\n";
//استدعاء داخلي‏
$bar->name();
?>

سينتج المثال السابق الناتج الآتي:

Its name is foo
My name is foo

المثال 2: مثال عن استخدام الدالةget_class()‎ في صنف أعلى (superclass)

<?php
abstract class bar {
    public function __construct()
    {
        var_dump(get_class($this));
        var_dump(get_class());
    }
}
class foo extends bar {
}
new foo;
?>

سينتج المثال السابق الناتج الآتي:

string(3) "foo"
string(3) "bar"

المثال 3: مثال عن استخدام الدالةget_class()‎ مع أصناف  ذات مجال أسماء

<?php
namespace Foo\Bar;
class Baz {
    public function __construct()
    {
    }
}

$baz = new \Foo\Bar\Baz;
var_dump(get_class($baz));
?>

سينتج المثال السابق الناتج الآتي:

string(11) "Foo\Bar\Baz"

انظر أيضًا

مصادر