Maison >développement back-end >tutoriel php >Migration PHP 5.2 vers 5.3 : quelle est la différence entre 'self' et 'static' dans la liaison statique tardive ?
Late Static Binding : Comprendre "self" vs. "static"
Dans le contexte de la conversion d'une bibliothèque PHP 5.3 vers PHP 5.2, l'utilisation d'une liaison statique tardive via "return new static($options)" pose des problèmes de compatibilité. Le remplacer par "return new self($options)" ne donnera pas les mêmes résultats. PHP 5.2 ne prend pas en charge les liaisons statiques tardives.
Comprendre les différences
Pour clarifier, la différence entre « self » et « static » réside dans leurs liaisons de classe :
Exemple :
class A { public static function get_self() { return new self(); } } class B extends A { public static function get_self() { return new self(); } } $a_self = A::get_self(); $b_self = B::get_self(); // $a_self is an object of class A // $b_self is an object of class B
En conclusion, lors de la conversion de code qui utilise une liaison statique tardive vers PHP 5.2 , envisagez de réviser la logique pour supprimer cette fonctionnalité. "self" peut être utilisé comme solution de contournement dans certains cas, mais il est important de comprendre son comportement de liaison limité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!