Quand utiliser 'self' sur '$this' en PHP 5
En PHP 5, utiliser le mot-clé correct pour faire référence à la classe les membres et les méthodes sont cruciaux. Lorsqu'il s'agit de choisir entre « self » et « $this », la décision dépend si vous faites référence à un membre statique ou à un membre d'instance.
Utiliser « $this » pour les membres d'instance.
'$this' fait référence à l'instance actuelle de l'objet. Il permet d'accéder aux membres non statiques, spécifiques à chaque instance. Par exemple :
class MyClass { private $member = 1; function __construct() { echo $this->member; // Outputs 1 } }
Utilisation de « self » pour les membres statiques
« self » fait référence à la classe actuelle, quelle que soit l'instance. Il est utilisé pour accéder aux membres statiques, qui sont partagés entre toutes les instances de la classe. Par exemple :
class MyClass { private static $staticMember = 2; function __construct() { echo self::$staticMember; // Outputs 2 } }
Polymorphisme et fonctions membres
'$this' active le polymorphisme, permettant aux classes dérivées de remplacer les fonctions membres de la classe parent. Par exemple :
class BaseClass { function foo() { echo 'BaseClass::foo()'; } } class DerivedClass extends BaseClass { function foo() { echo 'DerivedClass::foo()'; } } $derivedObject = new DerivedClass(); $derivedObject->foo(); // Outputs 'DerivedClass::foo()'
Suppression du polymorphisme avec 'self'
En utilisant 'self' au lieu de '$this' dans les fonctions membres, vous pouvez supprimer le comportement polymorphe . La fonction appellera toujours l'implémentation depuis la classe parent, quel que soit le type réel de l'objet. Par exemple :
class BaseClass { function foo() { echo 'BaseClass::foo()'; } } class DerivedClass extends BaseClass { function foo() { echo 'DerivedClass::foo()'; } } $derivedObject = new DerivedClass(); $derivedObject->self::foo(); // Outputs 'BaseClass::foo()'
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!