Late Static Binding
PHP 🔴 SeniorDéfinition
Mécanisme (static:: vs self::) qui résout la référence a la classe au moment de l'exécution, pas de la définition. Permet aux méthodes héritées de référencer la classe enfant.
Analogie
Comme un formulaire générique qui s'adapte au logo de l'entreprise qui l'utilise, pas celle qui l'a créé.
Exemple de code
class Model {
public static function create(array $data): static {
return new static($data); // static = classe enfant
}
}
class User extends Model {}
$user = User::create(['name' => 'Alice']); // retourne User
Cas d'usage
Dans les classes de base (ORM, factories) ou les méthodes héritées doivent retourner le type de la sous-classe.
Anti-pattern
Utiliser self:: dans une méthode de base quand on veut que les enfants puissent la spécialiser.