stdClass في PHP: ما هو وكيفية استخدامه (برنامج تعليمي)

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

stdClass في PHP: سحر الكائن الفارغ



إذا كنت قد كتبت أي كود بلغة PHP من قبل، فمن المحتمل أنك واجهت موقفًا: تحتاج إلى إنشاء كائن بسرعة، ولكن ليس لديك فئة جاهزة. أو تحصل على بيانات من قاعدة البيانات، وتأتي في شكل كائن، لكنك لا تفهم من أين جاءت خصائصه. هل يبدو ذلك مألوفًا؟ مرحبًا بك في عالم stdClass — الفئة المضمنة في PHP والتي تعمل كـ"حاوية فارغة" للبيانات.



في هذه المقالة، سنشرح ما هو stdClass، ولماذا تحتاجه، وكيفية إنشائه واستخدامه. ستتعرف على الفرق بينه وبين المصفوفة العادية، وستحصل على أمثلة عملية يمكنك تطبيقها فورًا في الكود. هيا بنا!



ما هو stdClass؟



stdClass (اختصار لـ "standard class") هي فئة فارغة مضمنة في PHP. ليس لها أي دوال (methods) أو خصائص (properties) أو سلوك محدد مسبقًا. إنها موجودة فقط لتتمكن من إنشاء كائن "على الطاير" دون كتابة فئة خاصة بك.



ببساطة، هو كائن مجهول يمكنك ملؤه بالخصائص في أي وقت. إذا سبق لك أن كتبت $obj = new stdClass();، فأنت قد استخدمته بالفعل.



<?php$obj = new stdClass();$obj->name = "أليكسي";$obj->age = 28;echo $obj->name; // سيطبع: أليكسي?>


في هذا المثال، أنشأنا كائنًا من stdClass وأضفنا له خاصيتين بشكل ديناميكي. لا حاجة للإعلان عن أي فئة مسبقًا — PHP سينشئ كل شيء بنفسه.



لماذا نحتاج stdClass؟



للوهلة الأولى، قد يبدو أن stdClass هو مجرد حل مؤقت. لماذا نستخدم كائنًا إذا كان بإمكاننا استخدام مصفوفة؟ في الواقع، له عدة استخدامات مهمة:



  • العمل مع JSON. عندما تقوم بفك تشفير JSON باستخدام json_decode() بدون الوسيط الثاني، يقوم PHP بإرجاع كائن من نوع stdClass. هذا هو السلوك الافتراضي.
  • هياكل البيانات المؤقتة. إذا كنت بحاجة إلى تمرير مجموعة بيانات بسرعة ككائن (على سبيل المثال، إلى دالة تتوقع كائنًا)، فإن stdClass هو الخيار المثالي.
  • التوافق مع API. العديد من المكتبات والأطر (frameworks) تتوقع كائنات وليس مصفوفات. stdClass يسمح لك بالتكيف بسهولة.
  • النمذجة الأولية (Prototyping). عندما تكتب نموذجًا أوليًا ولا تريد إضاعة الوقت في إنشاء فئة كاملة، فإن stdClass ينقذ الموقف.


من المهم أن تفهم: stdClass ليس مصممًا للمنطق المعقد. إذا كنت بحاجة إلى دوال (methods) أو وراثة (inheritance) أو تغليف (encapsulation) — قم بإنشاء فئتك الخاصة.



كيفية إنشاء كائن stdClass؟



يمكن إنشاء كائن stdClass بعدة طرق. دعنا نستعرض كل منها.



1. عبر عامل new

الطريقة الأكثر وضوحًا هي استخدام new stdClass():



<?php$user = new stdClass();$user->name = "ماريا";$user->email = "maria@example.com";?>


2. من JSON

عند فك تشفير JSON باستخدام json_decode() (بدون العلم true) تحصل على stdClass:



<?php$json = '{"name":"إيفان","age":30}';$obj = json_decode($json);echo $obj->name; // إيفانecho get_class($obj); // stdClass?>


3. تحويل النوع (Type casting)

يمكنك تحويل مصفوفة إلى كائن باستخدام (object):



<?php$array = ["name" => "أولغا", "city" => "موسكو"];$obj = (object) $array;echo $obj->city; // موسكو?>


لاحظ: عند تحويل مصفوفة بمفاتيح رقمية، ستصبح المفاتيح غير قابلة للوصول (سيقوم PHP بتحويلها إلى خصائص، ولكن سيتعين عليك الوصول إليها عبر الأقواس المعقوفة).



stdClass مقابل المصفوفة: أيهما تختار؟



هذا سؤال أبدي. دعنا نقارن:



المدونات

توصيات الكتب

المعيار stdClass