Late Static Binding
PHP 🔴 SeniorDefinition
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.