Bonjour
public function(par defaut) = public static function
est ce correct ??
Merci
Bonjour
public function(par defaut) = public static function
est ce correct ??
Merci
Si tu espères une réponse sois un peu plus précis. Quel language, quel contexte...
Bonjour,
Je ne comprends pas bien la question, mais si c'est ce que je pense, non, public static function et public function ce n'est pas la même chose.
public function = définition d'une fonction sur une instance d'un objet, qui aura accès à $this, et aux valeurs des variables d'instance, ET aux variables statiques.
public static function = définition d'une fonction sur une classe, qui n'aura pas accès à $this, ni aux valeurs des variables d'instance, mais qui aura toujours accès aux variables statiques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class A{ public $var = 'a'; public static $static = 'b'; public function ecrire() { echo $this -> var; echo self :: $static; } public static function ecriture( ){ echo self :: $static; //ici, $this -> var provoquerais une erreur ( using $this when not in object context ) } } $a = new A( ); A :: ecriture( ); //appel à une fonction statique $a -> ecrire( ); //appel à une fonction non statique
Bonjour,
une méthode (fonction) statique peut être utilisé sans instancié un objet en plus tout pour tous les objets de la classe il y a qu'une copie de la méthode en mémoire.
Exemple :
tu as une classe Parent
tu peux directement exécuté la méthode statique sans créer un objet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Parent{ public function test(){ //... } public static function test2(){ //... } }
tandis que le code suivant générerai une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part Parent->test2()
Pour exécuter la méthode non statique faudrait passer par instancier un objet
Code : Sélectionner tout - Visualiser dans une fenêtre à part Parent::test()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $objet = new Parent(); $objet->test();
juste une petite correction si je me rappelle bien
1-on ne peut appeler une classe "Parent" (mot réservé).
2-on appelle la méthode statique ainsi
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Parents::test2();
Partager