أسئلة مقابلات OOP & Design Patterns in PHP في PHP & Laravel
12 سؤال عن OOP & Design Patterns in PHP من مسار PHP & Laravel. اقرأ الإجابة المختصرة لكل سؤال هنا، وافتح السؤال للشرح الكامل والأمثلة والأخطاء الشائعة والمصادر.
- مبتدئ
كيف تختصر ميزة Constructor Property Promotion كتابة الفئات في PHP 8+؟
تسمح بتعريف الخصائص ونوعها ومستوى الرؤية وإسنادها مباشرة داخل معاملات الباني (__construct) في سطر واحد دون تكرار الكود.
اقرأ الشرح الكامل - متوسط
ما هي فئات Readonly Classes في PHP 8.2 وكيف تعزز مبدأ كائنات القيمة غير القابلة للتعديل (Value Objects)؟
فئة تجعل كل خصائصها readonly تلقائياً وتمنع إضافة أي خصائص ديناميكية، مما يضمن ثبات حالة الكائن بعد إنشائه.
اقرأ الشرح الكامل - متوسط
كيف تحل تعارض أسماء الدوال عند استخدام سمات Traits متعددة في PHP؟
تستخدم كلمة insteadof لتحديد الدالة الفائزة من السمة المحددة، وكلمة as لإعطاء اسم بديل (Alias) أو تغيير مستوى الرؤية للدالة الأخرى.
اقرأ الشرح الكامل - مبتدئ
ما هي الدوال السحرية (Magic Methods) الأساسية في PHP وما هو دور __get و __set و __call؟
دوال تبدأ بشرطتين سفليتين (__); وتُستدعى تلقائياً عند وقوع أحداث محددة مثل محاولة قراءة (__get) أو كتابة (__set) خاصية غير موجودة أو استدعاء دالة غير معلنة (__call).
اقرأ الشرح الكامل - مبتدئ
متى تختار واجهة برمجة (Interface) ومتى تختار فئة مجردة (Abstract Class) في تصميم كود PHP؟
تختار Interface لتعريف عقد سلوكي مجرد وتطبيقه عبر فئات غير مترابطة، وتختار Abstract Class عندما تريد مشاركة كود وتنفيذ حقيقي بين فئات تنتمي لنفس العائلة الهرمية.
اقرأ الشرح الكامل - متوسط
ما الفرق الجوهري بين كلمة self وكلمة static في استدعاءات الـ Late Static Binding بـ PHP؟
تشير self إلى الفئة التي كُتب فيها الكود أثناء زمن الترجمة، بينما تشير static إلى الفئة التي تم استدعاء الدالة منها فعلياً وقت التشغيل.
اقرأ الشرح الكامل - متوسط
ما هي الفئات المجهولة (Anonymous Classes) ومتى يتم استخدامها في PHP؟
هي فئات تُنشأ وتُنفذ في مكانها دون إعطائها اسماً رسمياً، وتستخدم في الاختبارات لإنشاء كائنات تجريبية أو تمرير تطبيقات سريعة لواجهات أحادية الاستخدام.
اقرأ الشرح الكامل - متوسط
كيف تعمل الدالة السحرية __invoke ودالة __clone وما هو النسخ العميق (Deep Copy)؟
__invoke تسمح بمعاملة الكائن وكأنه دالة واستدعائه مباشرة، بينما __clone تُستدعى عند نسخ كائن لتنفيذ نسخ عميق للكائنات المتداخلة بداخله.
اقرأ الشرح الكامل - متقدم
كيف تختلف معاملات الكائنات (Objects by Reference) عن المتغيرات العادية في تمرير دوال PHP؟
تُمرر الكائنات بمعرف الكائن (Object Identifier)؛ لذا فإن تعديل خصائص الكائن داخل دالة ينعكس على الكائن الأصلي دون الحاجة لعلامة &.
اقرأ الشرح الكامل - متقدم
كيف تستخدم حزم الـ Service Containers واجهة Reflection API في PHP لتحقيق الـ Auto-wiring؟
تفحص فئات ReflectionClass و ReflectionMethod معاملات الباني، وتستخرج أنواعها البرمجية، وتنشئ نسخ التبعيات تلقائياً وتحقنها دون إعداد يدوي.
اقرأ الشرح الكامل - متقدم
ما هو نمط Action-Domain-Responder (ADR) وكيف يحل مشكلة المتحكمات المتضخمة (Fat Controllers)؟
هو نمط يعوض MVC بتقسيم العمل إلى: Action (متحكم أحادي الاستخدام)، Domain (منطق الأعمال والنماذج)، وResponder (تنسيق الاستجابة والـ JSON).
اقرأ الشرح الكامل - متقدم
ما هي إيجابيات وسلبيات تطبيق نمط المستودع (Repository Pattern) فوق Eloquent في Laravel؟
إيجابيته عزل طبقة البيانات لتسهيل التبديل والاختبار، وسلبيته إضافة طبقة تجريد مفرطة ومجهدة (Boilerplate) نظراً لأن Eloquent يمثل بالفعل نمط Active Record متكامل.
اقرأ الشرح الكامل