كيف تجتاز مقابلة PHP: أهم الأسئلة من الألف إلى الياء
\n\nمقابلة وظيفة مطور PHP ليست مجرد اختبار لمعرفة بناء الجملة. يريد أصحاب العمل رؤية كيف تفكر، وكيف تحل المشكلات، ومدى عمق فهمك لنظام اللغة البيئي. لمساعدتك على الاستعداد، قمنا بتجميع أهم أسئلة PHP من الألف إلى الياء، مقسمة إلى مواضيع رئيسية: من أساسيات OOP إلى العمل مع قواعد البيانات والأمان.
\n\nهذه المقالة هي قائمة التحقق الخاصة بك لاجتياز المقابلة بنجاح. ادرسها، وتدرب على أمثلة الكود، وستشعر بالثقة.
\n\n1. أساسيات PHP و OOP (البرمجة كائنية التوجه)
\n\nلنبدأ بالأساسيات. بدون فهم OOP في PHP الحديث، لا يمكنك المضي قدمًا. غالبًا ما يطرح المحاورون أسئلة تختبر فهمك للمبادئ.
\n\nسؤال: ما هو التغليف، الوراثة، وتعدد الأشكال؟
\nهذه هي "الركائز الثلاث" لـ OOP. القدرة على شرحها بمثال هي مهارة إلزامية.
\n- \n
- التغليف — إخفاء التنفيذ الداخلي للكائن. يتم الوصول إلى البيانات من خلال الطرق العامة (getters/setters). \n
- الوراثة — إمكانية إنشاء فئة جديدة بناءً على فئة موجودة (الأصل). \n
- تعدد الأشكال — قدرة كائنات من فئات مختلفة على معالجة نفس الطريقة بطريقتها الخاصة. \n
<?php\n// مثال على التغليف\nclass User {\n private string $name;\n\n public function setName(string $name): void {\n $this->name = htmlspecialchars($name); // حماية من XSS\n }\n\n public function getName(): string {\n return $this->name;\n }\n}\n\n// مثال على الوراثة وتعدد الأشكال\nabstract class Animal {\n abstract public function makeSound(): string;\n}\n\nclass Dog extends Animal {\n public function makeSound(): string {\n return "نباح!";\n }\n}\n\nclass Cat extends Animal {\n public function makeSound(): string {\n return "مواء!";\n }\n}\n\n$animals = [new Dog(), new Cat()];\nforeach ($animals as $animal) {\n echo $animal->makeSound() . " "; // سيطبع: نباح! مواء!\n}\n?>\n\nسؤال: ما الفرق بين الواجهة والفئة المجردة؟
\nهذا سؤال كلاسيكي. الواجهة تحدد عقدًا (توقيعات الطرق فقط)، بينما يمكن للفئة المجردة أن تحتوي على تنفيذ افتراضي وخصائص.
\n\n2. العمل مع قواعد البيانات و SQL
\n\nنادرًا ما يعمل PHP بمعزل عن قواعد البيانات. أسئلة حول MySQL و PDO هي جزء إلزامي من أي مقابلة.
\n\nسؤال: لماذا يجب استخدام PDO بدلاً من mysqli؟
\nPDO (PHP Data Objects) هو تجريد يسمح بالتبديل بسهولة بين أنظمة إدارة قواعد البيانات المختلفة (MySQL, PostgreSQL, SQLite) دون إعادة كتابة الكود. بالإضافة إلى ذلك، يدعم PDO العناصر النائبة المسماة، مما يجعل الكود أنظف.
\n\n<?php\n// مثال على استعلام آمن باستخدام PDO\n$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';\n$pdo = new PDO($dsn, 'user', 'password');\n\n$sql = "SELECT * FROM users WHERE email = :email";\n$stmt = $pdo->prepare($sql);\n$stmt->execute([':email' => 'test@example.com']);\n$user = $stmt->fetch(PDO::FETCH_ASSOC);\n?>\n\nسؤال: كيف تحمي نفسك من حقن SQL؟
\nالإجابة الرئيسية: لا تقم أبدًا بإدخال بيانات المستخدم مباشرة في استعلام SQL. استخدم العبارات المحضرة (prepared statements) مع العناصر النائبة. هذا يضمن أن البيانات سيتم تخطيها تلقائيًا.
\n\n3. الأمان وأفضل الممارسات
\n\nالأمان هو ما يميز المبتدئ عن المحترف. يحب المحاورون طرح أسئلة حول هذا الموضوع.
\n\nسؤال: ما هي أنواع الهجمات الأكثر شيوعًا في تطبيقات الويب PHP؟
\n- \n
- XSS (Cross-Site Scripting) — إدخال نصوص برمجية. الحماية: استخدم
htmlspecialchars()أوstrip_tags()عند عرض البيانات. \n