Selon VS. ceci en php
- 4212
- 412
- Mathilde Roux
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 objet et 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, tous les cas 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 soi::
. D'autres méthodes et variables sont utilisées dans le contexte d'un objet (une instance) d'une classe, en utilisant ce->
.
Tableau de comparaison
soi | ce | |
---|---|---|
Peut être utilisé dans les fonctions statiques | Oui | Non |
Variable de classe accessible et méthodes avec | soi:: | $ this-> (notez que php> 5.3 Permet l'utilisation de $ ceci avec des variables statiques Utiliser $ this :: $ foo. $ this-> foo ne sera toujours pas défini si $ foo est un var statique.) |
A besoin d'un objet instancié | Non | Oui |
Self vs ceci dans PHP - Exemples
classe exampleclass public static $ foo; public $ bar; Fonction publique régulièreFunction () echo $ this-> bar; Fonction statique publique staticFunction () echo self :: $ foo; fonction statique publique AnothersTatfn () self :: staticFunction (); Fonction publique régulièreFnUSingStaticVar () echo self :: $ foo; // Remarque: à partir de PHP 5.3 Utilisation de $ ceci :: $ Bar au lieu de soi :: $ Bar est autorisé exampleclass :: $ foo = "Bonjour"; $ obj = new ExampleClass (); $ obj-> bar = "monde!"; exampleclass :: staticFunction (); / * imprime bonjour * / $ obj-> régulièrement (); / * imprime le monde! * /
Les fonctions statiques ne peuvent utiliser que des variables statiques. Les fonctions et variables statiques sont référencées via soi::functionName () ou soi::Nom de variable. Dans l'exemple indiqué ci-dessus, les variables statiques sont référencées avec le nom de classe (exampleclass :: $ foo) ou, avec un soi:: (self :: $ foo) lorsqu'il est utilisé dans la méthode statique [nommé staticFunction ()] de la classe.
Les fonctions régulières et les variables d'une classe ont besoin d'un contexte d'objet à référencer. Ils ne peuvent exister sans contexte d'objet. Le contexte de l'objet est fourni par $ ceci. 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 une variable obj) ou comme $ this-> bar (encore dans un contexte d'objet dans une méthode d'un objet).
soi n'utilise pas de précédent $ parce que soi ne connote pas une variable mais la classe se construit elle-même. $ ceci fait référence à une variable spécifique afin qu'il ait un précédent $.