[PHP] Recuperer une variable dans une classe
Résolu/Fermé
IdleMan
Messages postés
243
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juin 2012
-
23 avril 2010 à 12:17
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 23 avril 2010 à 14:59
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 23 avril 2010 à 14:59
A voir également:
- [PHP] Recuperer une variable dans une classe
- Recuperer message whatsapp supprimé - Guide
- Récupérer une vidéo youtube - Guide
- Récupérer mon compte facebook désactivé - Guide
- Recuperer le son d'une video - Guide
- Comment récupérer un compte facebook piraté - Guide
2 réponses
Giorgiolino
Messages postés
253
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
23 avril 2010 à 14:59
23 avril 2010 à 14:59
Bonjour,
un constructeur sert à initialiser un objet. Autrement dit, c'est la fonction qui est appelée lorsque tu crées un objet avec le mot clé new. Ici en l'occurence, dans un constructeur, une instruction "echo" n'a pas sa place.
Tu devrais plutôt:
1/ Définir un attribut pour ta classe, par exemple $nom
2/ Appeler ton constructeur avec un paramètre, par exemple $nom, $blabla, $toto, peu importe.
3/ Initialiser ton attribut avec le paramètre passé par le constructeur, par exemple $this->nom = $nom ou $this->nom = $blabla, etc.
Exemple1:
Exemple2:
Avec le premier exemple tu est obligé de fournir un nom quand tu crée un objet de ta classe. Ainsi $objet = new maClasse(); va te générer une erreur. Il est possible de passer outre cela en définissant une valeur par défaut pour ton attribut et ton paramètre.
Remarque:
Pour l'exemple, j'ai déclaré tes attributs en "public". Sache que cela expose cet attribut dans le reste de ton code. Donc je t'invite à te document sur les modes "private" et "protected".
un constructeur sert à initialiser un objet. Autrement dit, c'est la fonction qui est appelée lorsque tu crées un objet avec le mot clé new. Ici en l'occurence, dans un constructeur, une instruction "echo" n'a pas sa place.
Tu devrais plutôt:
1/ Définir un attribut pour ta classe, par exemple $nom
2/ Appeler ton constructeur avec un paramètre, par exemple $nom, $blabla, $toto, peu importe.
3/ Initialiser ton attribut avec le paramètre passé par le constructeur, par exemple $this->nom = $nom ou $this->nom = $blabla, etc.
Exemple1:
class maClasse{ public $nom; // je crée un attribut "nom" function __construct($nom) { $this->nom=$nom; } } $objet = new maClasse("toto"); echo $objet->nom; //affiche "toto" (sans les guillemets évidemment...)
Exemple2:
Avec le premier exemple tu est obligé de fournir un nom quand tu crée un objet de ta classe. Ainsi $objet = new maClasse(); va te générer une erreur. Il est possible de passer outre cela en définissant une valeur par défaut pour ton attribut et ton paramètre.
class maClasse{ public $nom = null; // je crée un attribut "nom" que j'initialise à null; ce n'est pas obligatoire mais conseillé. function __construct($nom=null) {//par défaut le paramètre vaut null $this->nom=$nom; } } $objet1 = new maClasse(); $objet2 = new maClasse("toto"); echo "\n\$objet1->nom = ".$objet1->nom; //affiche "$objet1->nom = " (toujours sans guillemets...) echo "\n\$objet2->nom = ".$objet2->nom; //affiche "$objet2->nom = toto "(sans les...)
Remarque:
Pour l'exemple, j'ai déclaré tes attributs en "public". Sache que cela expose cet attribut dans le reste de ton code. Donc je t'invite à te document sur les modes "private" et "protected".
ACervoise
Messages postés
216
Date d'inscription
mercredi 3 juin 2009
Statut
Membre
Dernière intervention
21 juin 2010
85
Modifié par ACervoise le 23/04/2010 à 12:20
Modifié par ACervoise le 23/04/2010 à 12:20
Il faut que dans ta classe tu déclares ta variable $test comme global il me semble.
Ca doit donner :
function __construct()
{
global $test;
echo $test;
}
Merci de mettre le statut du sujet en résolu lorsque c'est le cas (-:
Ca doit donner :
function __construct()
{
global $test;
echo $test;
}
Merci de mettre le statut du sujet en résolu lorsque c'est le cas (-:
IdleMan
Messages postés
243
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juin 2012
60
23 avril 2010 à 14:29
23 avril 2010 à 14:29
Merci beaucoup, ça fonctionne !!