Aller au contenu

classes PHP


Sujets conseillés

Posté (modifié)

Bonjour a tous :D

Alors, je me mets difficilement aux classes PHP, et j'essaye d'avancer, mais c'est laborieux...

Alors j'ai cette configuration de script là :

class machin
{
function f1(..)
{
 [...]
}
function f2($variable)
{
$this->truc='var'
$bidule[$variable]->f1();
}

}


$bidule[1] = new machin();
$bidule[2] = new machin();

$bidule[1]->f2(2);

Apparemment la ligne

$bidule[$variable]->f1();

n'est pas acceptée par PHP :

Fatal error: Call to a member function on a non-object in XXXXXX/dynamique.php on line 51

Je ne comprends pas bien : tout me semble correct pourtant non ? Ou alors, dans une classe, il est impossible de faire appel a une autre variable de la classe ? Arf...

Sinon, voyez vous une autre possibilité de faire ? Parce qu'il faudrait que je renvoie une variable en dehors de la fonction, et que je rappelle la f1 en dehors de la classe ? Bref, suis bloqué :D

Merci de vos réponses ;)

Modifié par sarc
Posté (modifié)

C'est normale que cela ne fonctionne pas. Dans ta class machin, on ne sait pas ce que c'est le $bidule.

La variable $bidule n'a pas de portée globale et n'est donc pas définie pour ta classe. pour que cela fonctionne il faudrait ajouter un "global $bidule;" dans la méthode "f2" de ta class "machin".

Cela donnerait (non testé) :

class machin
{
function f1(..)
{
[...]
}
function f2($variable)
{
global $bidule;
$this->truc='var'
$bidule[$variable]->f1();
}

}


$bidule[1] = new machin();
$bidule[2] = new machin();

$bidule[1]->f2(2);

Enfin pas terrible à mon gôut. Ne peux tu pas ajouter un membre à ta classe qui ferait référence à ton "bidule" ?

Modifié par petit-ourson
Posté (modifié)

Nan le probleme c'est que c'est géré par SQL et qu'il pourra y avoir plusieurs.. euh, milliers ? de requetes différentes, et beaucoup avec la meme classe... Bref, galère galère... En tout, j'ai du louper un truc qque part, avec global ca marche... ^o)

C'est bizarre, mais bon tant que ca marche c'est bon :D... Merci bien !

Par contre, vu que bidule est sous forme de tableau, ca va pas ralentir le programme de mettre global ? Parce que bidule peut avoir plusieurs milliers d'enregistrements lui aussi ^^

Modifié par sarc

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...