Comment réussir un entretien PHP : top questions et réponses

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction

Un entretien pour un poste de développeur PHP ne consiste pas seulement à vérifier la syntaxe du langage, mais aussi à tester la compréhension de l'architecture, de la sécurité et des approches modernes. De nombreux candidats se perdent sur des questions de base parce qu'ils ne se préparent pas systématiquement. Dans cet article, nous allons passer en revue les questions les plus fréquemment posées lors des entretiens PHP, avec des exemples de code et des explications. Ce contenu sera utile aussi bien aux débutants qu'aux développeurs expérimentés souhaitant rafraîchir leurs connaissances.

Types de données et conversion de types

Quels sont les types de données existant en PHP ?

PHP prend en charge 8 types de données principaux, répartis en trois groupes :

  • Scalaires : bool, int, float, string.
  • Composites : array, object, callable, iterable.
  • Spéciaux : resource, null.

Exemple de vérification de type :

$value = "123";
if (is_numeric($value)) {
    $intValue = (int) $value; // conversion en int
    var_dump($intValue); // int(123)
}

Quelle est la différence entre == et === ?

L'opérateur == compare les valeurs après conversion de type, tandis que === compare sans conversion (comparaison stricte). C'est l'un des pièges les plus courants :

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

POO en PHP : héritage, interfaces et traits

Que sont les traits et à quoi servent-ils ?

Les traits sont un mécanisme de réutilisation de code en PHP qui résout le problème de l'héritage unique. Un trait ne peut pas être instancié, mais il peut être intégré dans une classe à l'aide de use :

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

class User {
    use Logger;
}

$user = new User();
$user->log("Utilisateur créé");

Quelle est la différence entre une classe abstraite et une interface ?

  • Une classe abstraite peut contenir l'implémentation de méthodes et des propriétés. Elle est héritée via extends.
  • Une interface définit uniquement les signatures des méthodes (sans implémentation). Une classe peut implémenter plusieurs interfaces via implements.
interface CanFly {
    public function fly();
}

abstract class Bird {
    abstract public function sound();
    public function eat() {
        echo "Mange du grain";
    }
}

class Eagle extends Bird implements CanFly {
    public function sound() { echo "Cri"; }
    public function fly() { echo "Vole"; }
}

Travail avec les bases de données et PDO

Qu'est-ce que PDO et pourquoi l'utilise-t-on ?

PDO (PHP Data Objects) est une extension pour travailler avec les bases de données qui fournit une interface unifiée pour différents SGBD (MySQL, PostgreSQL, SQLite, etc.). Le principal avantage est la protection contre les injections SQL via les requêtes préparées :

$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);

Comment gérer les erreurs dans PDO ?

La meilleure pratique est de passer PDO en mode exceptions :

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

Sécurité et vulnérabilités courantes

Comment protéger une application contre les XSS et les injections SQL ?

Lors d'un entretien, il est important de montrer une compréhension non seulement de la théorie, mais aussi des mesures pratiques :

  • Injections SQL : utilisez PDO avec des requêtes préparées (voir l'exemple ci-dessus).

Blogs

Book Recommendations