كيف تجتاز مقابلة PHP: أهم الأسئلة والإجابات

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

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

ابدأ الدورة

مقدمة

مقابلة العمل لوظيفة مطور PHP ليست مجرد اختبار لبناء الجملة (syntax) للغة، بل هي أيضًا اختبار لفهم الهندسة المعمارية (architecture)، والأمان، والمناهج الحديثة. يضيع العديد من المرشحين في الأسئلة الأساسية لأنهم لا يستعدون بشكل منهجي. في هذا المقال، سنستعرض أهم الأسئلة التي تُطرح غالبًا في مقابلات PHP، مع أمثلة كود وشروحات. ستكون المادة مفيدة للمبتدئين والمطورين ذوي الخبرة الذين يرغبون في تحديث معلوماتهم.



أنواع البيانات وتحويل الأنواع (Type Casting)



ما هي أنواع البيانات الموجودة في PHP؟

يدعم PHP 8 أنواع بيانات أساسية، مقسمة إلى ثلاث مجموعات:

  • الأنواع العددية (Scalar): bool، int، float، string.
  • الأنواع المركبة (Compound): array، object، callable، iterable.
  • الأنواع الخاصة (Special): resource، null.

مثال للتحقق من النوع:

$value = "123";if (is_numeric($value)) {    $intValue = (int) $value; // تحويل إلى int    var_dump($intValue); // int(123)}


ما الفرق بين == و ===؟

العامل == يقارن القيم بعد تحويل الأنواع (type coercion)، بينما === يقارن بدون تحويل (مقارنة صارمة). هذا أحد أكثر الفخاخ شيوعًا:

var_dump(0 == "0");   // bool(true)var_dump(0 === "0");  // bool(false)


البرمجة كائنية التوجه (OOP) في PHP: الوراثة، الواجهات، والـ Traits



ما هي الـ Traits وما فائدتها؟

الـ Traits هي آلية لإعادة استخدام الكود في PHP، تحل مشكلة الوراثة الفردية (single inheritance). لا يمكن إنشاء كائن من Trait، ولكن يمكن تضمينه في كلاس باستخدام use:

trait Logger {    public function log($message) {        echo "[LOG]: $message";    }}

class User { use Logger;}

$user = new User();$user->log("تم إنشاء المستخدم");


ما الفرق بين الكلاس المجرد (Abstract Class) والواجهة (Interface)؟

  • الكلاس المجرد يمكن أن يحتوي على تنفيذ للدوال (methods) وخصائص (properties). يتم توريثه باستخدام extends.
  • الواجهة تحدد فقط توقيعات الدوال (signatures) بدون تنفيذ. يمكن للكلاس تنفيذ عدة واجهات باستخدام implements.
interface CanFly {    public function fly();}

abstract class Bird { abstract public function sound(); public function eat() { echo "يأكل الحبوب"; }}

class Eagle extends Bird implements CanFly { public function sound() { echo "صراخ"; } public function fly() { echo "يطير"; }}


العمل مع قواعد البيانات و PDO



ما هو PDO ولماذا يُستخدم؟

PDO (PHP Data Objects) هو إضافة (extension) للعمل مع قواعد البيانات، توفر واجهة موحدة لأنظمة إدارة قواعد البيانات المختلفة (MySQL, PostgreSQL, SQLite وغيرها). الميزة الرئيسية هي الحماية من هجمات SQL Injection عبر الاستعلامات المحضرة (prepared statements):

$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');$stmt->execute([':email' => 'user@example.com']);$user = $stmt->fetch(PDO::FETCH_ASSOC);


كيف يتم معالجة الأخطاء في PDO؟

أفضل ممارسة هي تحويل PDO إلى وضع الاستثناءات (exceptions):

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);try {    $pdo->exec("INSERT INTO users (name) VALUES ('John')");} catch (PDOException $e) {    echo "خطأ: " . $e->getMessage();}


الأمان والثغرات الشائعة



كيف تحمي التطبيق من XSS و SQL Injection؟

في المقابلة، من المهم إظهار فهم ليس فقط للنظرية، ولكن أيضًا للإجراءات العملية:

  • SQL Injection: استخدم PDO مع الاستعلامات المحضرة (انظر المثال أعلاه).

المدونات

توصيات الكتب