Quiz 1 — Fondamentaux & PHP
1. « Symfony » désigne deux choses : lesquelles ?
Réponse
Une collection de composants PHP réutilisables et un framework full-stack qui les assemble.
2. Quelle est la licence de Symfony, et pourquoi est-ce important pour vendre un produit ?
Réponse
MIT (permissive) : on peut bâtir du propriétaire par-dessus, sans obligation d’ouvrir son code (contrairement au GPL).
3. Pourquoi 7.4 LTS et 8.0 sont-elles sorties le même jour ?
Réponse
La dernière mineure d’une majeure (X.4, LTS) sort avec la première de la suivante (X+1.0) ; 8.0 = 7.4 sans le code déprécié.
4. Combien de temps une version LTS est-elle supportée ?
Réponse
~3 ans de correctifs de bugs, ~4 ans de correctifs de sécurité.
5. Qu’est-ce que Composer, et son équivalent JS ?
Réponse
Le gestionnaire de dépendances PHP (≈ npm/pnpm) ; le registre est Packagist (≈ npmjs.com).
6. Que fait Symfony Flex de plus qu’installer un paquet ?
Réponse
Il applique une recipe : configuration automatique (fichiers de config, .env, enregistrement du bundle). « Installer = configurer. »
7. Où vit le code applicatif dans une app Symfony moderne ?
Réponse
Dans src/ sous le namespace App\ — plus dans un AppBundle.
8. Quel opérateur concatène deux chaînes en PHP ?
Réponse
Le point . ('a' . 'b'). + = addition uniquement.
9. Différence entre -> et :: ?
Réponse
-> = membre d’instance ; :: = membre statique, constante ou cas d’enum.
10. Que fait declare(strict_types=1) ?
Réponse
Il désactive la coercition des types : PHP exige le type exact et lève une TypeError sinon. À mettre en tête de chaque fichier.
11. Enum pure vs backed ?
Réponse
Pure = cas nommés seulement ; backed = chaque cas a une valeur scalaire (nécessaire pour persister/sérialiser).
12. Que font from() et tryFrom() sur une enum ?
Réponse
Convertir une valeur en cas ; from() lève si inconnue, tryFrom() renvoie null.
13. Un attribut PHP « fait »-il quelque chose par lui-même ?
Réponse
Non : c’est une métadonnée passive ; un lecteur (Symfony, Doctrine…) l’interprète via réflexion.
14. Qu’apporte la promotion de constructeur ?
Réponse
Elle déclare et assigne les propriétés directement dans les paramètres du constructeur (fin du boilerplate).
15. Que fait l’opérateur ?-> ?
Réponse
Le nullsafe : court-circuite à null dès qu’un maillon de la chaîne est null.
16. PHP est-il à typage nominal ou structurel ?
Réponse
Nominal : la compatibilité dépend du nom du type → implémenter l’interface (pas de duck typing structurel comme en TS).
17. Comment PHP « importe »-t-il du code ?
Réponse
Par namespace + use, résolus par l’autoload PSR-4 (namespace → fichier). Pas de require manuel.
18. PHP a-t-il async/await ? Comment gère-t-on l’arrière-plan ?
Réponse
Non : code synchrone par requête. Le différé passe par Messenger (workers).
19. Quelle commande vérifie que PHP est prêt pour Symfony ?
Réponse
symfony check:requirements.
20. --webapp vs skeleton minimal ?
Réponse
--webapp installe le pack full-stack (Twig, sécurité, forms…) ; le skeleton minimal est fait pour une API, on ajoute à la demande.
Quiz suivant : Quiz 2 — Cœur & Doctrine.