Ah, je viens enfin de mieux comprendre à quoi servait l’opérateur cons ::
. Dans le précédent billet où j’en parlais je disais qu’il permet de résoudre un attribut ou une méthode, éh bien c’est tout à fait vrai !
- Pour appeler un attribut ou une méthode d’une class dans cette même class, on utilise
$this->methodeOuAttribut
. - Pour appeler un attribut ou une méthode d’une class lorsqu’on a instancié cette class, on utilise
$nomInstance->methodeOuAttribut
. - Pour appeler un attribut ou une méthode d’une class dans une autre class, on utilise
NomDeLaClass::methodeOuAttribut
. Les deux class doivent bien sûr se trouver dans le même fichier, ou on peut inclure l’une dans le fichier de l’autre avecinclude()
ourequire()
.
Dans le cas d’un attribut, si l’on tente d’y accéder avec le nom d’une class, cela signifie que notre attribut doit être static, il reste identique pour toutes les instances de cette class.
Prêt pour un petit exemple (débile) ?
<?php class DitBonjour { protected static $fr = 'Coucou le monde !'; public static $en = 'Hello world!'; public static $de = 'Guten tag!'; function saluer() { return 'Guten tag!'.'<br />'; } function saluer_en_langue($langue) { return $langue; } function fr() { return self::$fr; } function de() { return $this->de; } } class Appeler { function dire_bonjour() { echo DitBonjour::saluer(); } function dire_bonjour_en_langue() { echo DitBonjour::saluer_en_langue(DitBonjour::fr()).'<br />'; echo DitBonjour::saluer_en_langue(DitBonjour::$en).'<br />'; echo DitBonjour::saluer_en_langue(DitBonjour::de()).'<br />'; } } $appel = new Appeler(); $appel->dire_bonjour(); $appel->dire_bonjour_en_langue();
Ceci renverra :
Guten tag!
Coucou le monde !
Hello world!
Notice: Undefined property: Appeler::$de in F:\bn\Web\Test\PHPObjet\test2.php on line 26
Continuer la lecture