$this se trompe de class
Résolu/Fermé
Stanislas Poisson
Messages postés
424
Date d'inscription
samedi 1 décembre 2012
Statut
Membre
Dernière intervention
22 mai 2018
-
26 déc. 2012 à 11:43
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 1 janv. 2013 à 20:57
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 1 janv. 2013 à 20:57
A voir également:
- $this se trompe de class
- Download failed because you may not have purchased this app ✓ - Forum Téléphones & tablettes Android
- This product requires the java language, which is either disabled or not available on this browser. ✓ - Forum Réseau
- Classez ces fichiers de la plus petite taille (1) à la plus grande (4). - Forum Bases de données
- This is the mail system at host ✓ - Forum Mail
- Iptv smarters pro sorry this video cannot be played - Forum Box et Streaming vidéo
1 réponse
JooS
Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 1/01/2013 à 20:58
Modifié par JooS le 1/01/2013 à 20:58
Salut !
En php, on définie une fonction avec le mot clé "function", ça m'étonne que PHP ne vous l'a pas signaler !
Quant au reste, en réalité vous vous trouver dans l'objet $systA, a travers cet objet vous avez appeler la méthode Date() dans un contexte statique, et dans cette méthode il y a th "$this", et "$this" pointe vers l'objet appelant, et non pas la classe appelante !
Donc il y a plusieurs façons d'y remédier !
1 - Héritage
2 - Travailler dans un contexte statique (l'important c'est que $datetimezone soit statique)
En php, on définie une fonction avec le mot clé "function", ça m'étonne que PHP ne vous l'a pas signaler !
Quant au reste, en réalité vous vous trouver dans l'objet $systA, a travers cet objet vous avez appeler la méthode Date() dans un contexte statique, et dans cette méthode il y a th "$this", et "$this" pointe vers l'objet appelant, et non pas la classe appelante !
Donc il y a plusieurs façons d'y remédier !
1 - Héritage
<?php abstract class A{ public function Data(){ return $this->Date(); } } class B extends A{ private $datetimezone; public function SetTimeZone($a){ $this->datetimezone=$a; } public function Date(){ return $this->datetimezone; } } $systB = new B(); $systB->SetTimeZone('Europe/Paris'); echo $systB->Data(); ?>
2 - Travailler dans un contexte statique (l'important c'est que $datetimezone soit statique)
<?php class A{ public function Data(){ return B::Date(); /* Ou $systB = new B(); return $systB->Date(); */ } } class B { private static $datetimezone; public function SetTimeZone($a){ self::$datetimezone = $a; } public function Date(){ return self::$datetimezone; } } B::SetTimeZone('Europe/Paris'); /* Ou $systB = new B(); $systB->SetTimeZone('Europe/Paris'); */ $systA = new A(); echo $systA->Data(); ?>