auto contre cela en PHP

PHP prend en charge les classes et autres constructions orientées objet. Les fonctions et variables statiques dans les classes PHP ne sont associées à aucune instance spécifique de la classe (en d'autres termes, un objet). Voir la différence entre l' objet et la classe .

Au lieu de cela, les fonctions et variables statiques sont associées à la définition de classe elle-même. En d'autres termes, toutes les instances d'une classe partagent la même variable statique. Dans le contexte d'une méthode (fonction) d'une classe, les variables et fonctions statiques sont accessibles en utilisant self:: . D'autres méthodes et variables sont utilisées dans le contexte d'un objet (une instance) d'une classe, en utilisant this-> .

Tableau de comparaison

auto par rapport à ce tableau de comparaison
soi cette
Peut être utilisé dans des fonctions statiquesOuiNon
variable de classe accessible et méthodes avecsoi::$ this-> (Notez que PHP> 5.3 permet l'utilisation de $ this avec des variables statiques use $ this :: $ foo. $ this-> foo sera toujours indéfini si $ foo est une variable statique.)
A besoin d'un objet instanciéNonOui

self vs this en PHP - Exemples

 classe exampleClass {public static $ foo; $ bar public; fonction publique regularFunction () {echo $ this-> bar; } fonction statique publique staticFunction () {echo self :: $ foo; } fonction statique publique anotherStatFn () {self :: staticFunction (); } fonction publique regularFnUsingStaticVar () {echo self :: $ foo; } // NOTE: Depuis PHP 5.3, l'utilisation de $ this :: $ bar au lieu de self :: $ bar est autorisée} exampleClass :: $ foo = "Hello"; $ obj = new exampleClass (); $ obj-> bar = "World!"; exampleClass :: staticFunction (); / * affiche Bonjour * / $ obj-> regularFunction (); / * imprime le monde! * / 

Les fonctions statiques ne peuvent utiliser que des variables statiques. Les fonctions et variables statiques sont référencées via self :: functionName () ou self :: variableName. Dans l'exemple ci-dessus, les variables statiques sont référencées avec le nom de classe (exampleClass :: $ foo) ou, avec un self :: (self :: $ foo) lorsqu'elles sont utilisées dans la méthode statique [ named staticFunction () ] de la classe .

Les fonctions et variables régulières d'une classe nécessitent un contexte d'objet pour être référencé. Ils ne peuvent exister sans un contexte d'objet. Le contexte de l'objet est fourni par $ this . Dans l'exemple ci-dessus, $ bar est une variable régulière et il est donc référencé comme $ obj-> bar (dans le contexte de l'objet avec la variable obj ) ou comme $ this-> bar (à nouveau dans un contexte d'objet dans une méthode d'un objet ).

self n'utilise pas un $ précédent car self ne connote pas une variable mais la classe se construit elle-même. $ cela fait référence à une variable spécifique, donc il a un $ précédent.

Articles Connexes