Lazy objects
PHP 🔴 SeniorDéfinition
Objets PHP 8.4 dont l'initialisation est différée jusqu'au premier accès à leur état. Deux stratégies via ReflectionClass : newLazyGhost() initialise l'objet sur place, newLazyProxy() délègué à une instance réelle créée à la demande. Lecture, écriture, clonage ou sérialisation déclenchent l'initialisation.
Analogie
Une chambre d'hôtel qu'on ne prépare que quand un client ouvre la porte.
Exemple de code
class Report {
public function __construct(public array $rows) {
echo "chargement coûteux\n";
}
}
$rc = new ReflectionClass(Report::class);
$lazy = $rc->newLazyGhost(function (Report $r) {
$r->__construct(fetchRows()); // exécuté au 1er accès
});
// rien n'est encore chargé
echo count($lazy->rows); // déclenche l'initialisation
Cas d'usage
Conteneurs d'injection (services lourds jamais appelés) et ORM (entités hydratées à la demande), sans proxys générés.
Anti-pattern
Créer des lazy objects à la main dans le code applicatif : c'est une primitive pour bibliothèques et frameworks.
Termes liés
Fiche mise à jour le 2026-09-27