Late Static Binding

PHP 🔴 Senior

Definition

Mecanisme (static:: vs self::) qui resout la reference a la classe au moment de l'execution, pas de la definition. Permet aux methodes heritees de referencer la classe enfant.

Analogie

Comme un formulaire generique qui s'adapte au logo de l'entreprise qui l'utilise, pas celle qui l'a cree.

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 methodes heritees doivent retourner le type de la sous-classe.

Anti-pattern

Utiliser self:: dans une methode de base quand on veut que les enfants puissent la specialiser.
#advanced#interview#oop