OVH Cloud OVH Cloud

utiliser un attribut de classe

1 réponse
Avatar
CrazyCat
Bonjour ici...

une question qui pourrait sembler de débutant, mais je me la pose depuis
longtemps...

lorsqu'on déclare des variables (attributs) dans une classe, peut-on les
utiliser simplement (sans les passer en paramêtre) dans les fonctions de
la classe?

Par exemple:
<?
class test {
var $disp = "toto";
function test() {
echo $this->disp;
}
}
?>
Ceci ne semble pas fonctionner (Notice: Undefined variable: this in...),
je présume que je dois donc faire:
function test($disp) {
$this->disp = $disp;
}

Je précise que je suis en php 4 au cas où...

--
Astuces pour webmasters: http://www.crazycat.info
Tchat francophone: http://www.crazy-irc.net

1 réponse

Avatar
Bruno Desthuilliers
CrazyCat wrote:
Bonjour ici...

une question qui pourrait sembler de débutant, mais je me la pose depuis
longtemps...

lorsqu'on déclare des variables (attributs) dans une classe, peut-on les
utiliser simplement (sans les passer en paramêtre) dans les fonctions de
la classe?


s/fonctions/methodes/

Normalement, oui. C'est même un peu le but de la manoeuvre, en fait...

Par exemple:
<?
class test {
var $disp = "toto";
function test() {
echo $this->disp;
}
}
?>


Semble correct pour la définition. Tu l'utilises comment, maintenant ?

Ceci ne semble pas fonctionner (Notice: Undefined variable: this in...),


Ok, je suppose que tu essaie d'appeler la méthode directement sur la
classe elle-même, ie

test::test();

La variable $this n'existe que dans une instance de la classe (un objet).

essaie plutôt:

$t = new test();
$t->test();


NB : php4 ne supporte pas la notion d'"attributs de classe" (attributs
partagés par toutes les instances d'une classe).

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"