Comment réussir un entretien PHP : analyse des questions les plus fréquentes
Un entretien pour un poste de développeur PHP ne teste pas seulement la syntaxe, mais aussi la compréhension de l'architecture, de la sécurité et des normes modernes (PSR). Dans cet article, nous avons rassemblé 10 questions clés qui sont le plus souvent posées lors des entretiens pour les niveaux Junior et Middle. Chaque question est accompagnée d'une explication, d'un exemple de code et des pièges typiques.
1. Quelle est la différence entre echo et print ? Et entre print_r et var_dump ?
C'est une question de base qui teste la connaissance des fonctions de sortie intégrées.
echo— une construction de langage, ne retourne pas de valeur. Fonctionne plus rapidement queprint.print— également une construction, mais retourne toujours1. Peut être utilisé dans des expressions.print_r— affiche des informations lisibles sur une variable (tableaux, objets). Retourne une chaîne si le deuxième paramètre esttrue.var_dump— affiche le type et la valeur d'une variable, y compris la longueur de la chaîne. Utile pour le débogage.
<?php$arr = ['a' => 1, 'b' => 2];echo print_r($arr, true); // Retourne une chaîne, n'affiche pas immédiatementvar_dump($arr); // array(2) { ["a"]=> int(1) ["b"]=> int(2) }?>2. Qu'est-ce que l'autoloading de classes et comment fonctionne-t-il avec Composer ?
L'autoloading permet à PHP d'inclure automatiquement les classes lors de leur première utilisation, sans require_once explicite.
- Auparavant, on utilisait la fonction
spl_autoload_register(). - Maintenant, le standard de facto est Composer et son autoloader.
- Composer supporte PSR-4 (espaces de noms) et PSR-0 (obsolète).
// composer.json{ "autoload": { "psr-4": { "App\\\\": "src/" } }}
// Après composer dump-autoload// Fichier src/User.php avec namespace App;$user = new \\App\\User(); // Se chargera automatiquement3. Différence entre include, require, include_once et require_once
Une question sur la compréhension du travail avec les fichiers externes et la gestion des erreurs.
include— émet un Warning si le fichier n'est pas trouvé, le script continue.require— émet une Fatal Error, le script s'arrête.*_once— vérifie si le fichier a déjà été inclus auparavant et ne l'inclut pas à nouveau.
Piège : include dans une boucle peut provoquer une inclusion répétée et une erreur de redéfinition de fonctions si include_once n'est pas utilisé.
4. Comment fonctionne PDO et en quoi est-il meilleur que les fonctions mysql_* ?
PDO (PHP Data Objects) est une interface pour travailler avec les bases de données. Sa connaissance est obligatoire pour tout développeur PHP moderne.
- Support de différents SGBD (MySQL, PostgreSQL, SQLite) — il suffit de changer le DSN.
- Utilise les requêtes préparées (prepared statements), ce qui protège contre les injections SQL.
- Gestion pratique des transactions et traitement des erreurs via les exceptions.
<?php$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';$pdo = new PDO($dsn, 'user', 'pass', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');$stmt->execute(['email' => $email]);$user = $stmt->fetch(PDO::FETCH_ASSOC);?>5. Que sont les méthodes magiques en PHP ? Donnez des exemples
Les méthodes magiques commencent par un double underscore (__) et sont appelées automatiquement lors de certaines actions sur un objet.
__construct()— appelée lors de la création d'un objet.__get()/__set()— appelées lors de l'accès ou de la modification de propriétés inaccessibles.__call()/__callStatic()— appelées lors de l'appel de méthodes inaccessibles.__toString()— permet à un objet d'être traité comme une chaîne.__invoke()— appelée lorsqu'un objet est utilisé comme une fonction.
<?phpclass User { private array $data = [];
public function __get($name) { return $this->data[$name] ?? null; }
public function __set($name, $value) { $this->data[$name] = $value; }
public function __toString() { return $this->data['name'] ?? 'Anonymous'; }}
$user = new User();$user->name = 'Alice';echo $user; // Alice?>