ماهي stdClass في PHP OOP؟
إن stdClass هي مجرد كلاس PHP Class عادية مسبقة الإعداد في PHP ولكن بدون أي خصائص أو طرق، يتم استخدامها في حالات تحويل أنواع البيانات الـ typecasting، ويمكن الاستفادة منها إذا أردنا إنشاء كائنات مؤقته. ولاتدعم الطرق السحرية PHP magic methods أو تطبيق الواجهات PHP Interface.
[highlight background=”” color=””]الكلاس stdClass لايمكن اعتبارها base class كما هو معروف في لغات أخرى لأن جميع الكلاسات في PHP مختصة بذاتها إلا إذا تم عملا ذلك صراحة بالتوريث PHP Inheritance[/highlight]
استخدام stdClass في تحويل البياناتعند تحويل نوع من البيانات وليكن مصفوفة PHP Array إلى كائن يتم عمل كائن من الكلاس stdClass تلقائياً، ويمكنك اختبار ذلك في الكود التالي
<?php $array = array( 'Property1'=>'hello', 'Property2'=>'world', 'Property3'=>'again', ); $obj = (object) $array; echo'<pre>'; print_r($obj); echo'</pre>'; ?>حيث قمنا بتحويل المصفوفة إلى كائن في السطر رقم 8 ، وعند طباعة الكائن كانت النتيجة أنه كائن من الكلاس stdClass
stdClass Object ( [Property1] => hello [Property2] => world [Property3] => again )وفي الحقيقة هناك بعض الدوال التي تعتمد على الكلاس stdClass عند التحويل من نوع بيانات آخر إلى PHP Object مثل الدالة json_decode. لاحظ الكود التالي:
<?php $json = '{ "foo": "bar", "number": 42 }'; $stdInstance = json_decode($json); echo'<pre>'; print_r($stdInstance); echo'</pre>'; ?>وتكون النتيجة
stdClass Object ( [foo] => bar [number] => 42 )وكما نلاحظ، فإن الدالة json_decode قامت بتحويل صيغة JSON إلى كائن من الكلاس stdClass.
استخدام stdClass في إنشاء كائنات مؤقتهفالكلاس stdClass يمكنك إنشاء كائن منها، وإعطاء هذا الكائن أية خصائص تريد، هكذا:
<?php $page=new stdClass(); $page->name='Home'; $page->status=1; echo'<pre>'; print_r($page); echo'</pre>'; ?>وتكون النتيجة
stdClass Object ( [name] => Home [status] => 1 )أحياناً يسميها بالبعض بالفئات المجهولة PHP anonymouse classes ولكن هذه التسمية غير دقيقة لأن PHP 7.0 تحتوي على تعريف مختلف تماماً للفئات المجهولة.
متى نستخدم stdClass؟لا تستخدم stdClass لمجرد تخزين البيانات لأن المصفوفات ستكون الحل الأمثل خاصة وإنه يتوفر لها العديد من الدوال التي تقوم بوظائف رائعة، وإنما تستخدم stdClass عندما يكون مطلوب التعامل مع البيانات ككائن.
فضلاً لاتتردد في ترك استفساراتك في التعليقات فهذا يسعدني ويشعرني بالتفاعل الذي يدفعني دائماً لتقديم كل ما في الإمكان لنشر معلومة قيمة
وفقنا الله وإياكم 🙂

