Late Static Binding

PHP 🔴 Senior

Dé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.
#advanced#interview#oop

← → au clavier pour passer d'une fiche à l'autre