Sarc Posté 16 Octobre 2004 Posté 16 Octobre 2004 (modifié) Bonjour a tous 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é Merci de vos réponses Modifié 16 Octobre 2004 par sarc
petit-ourson Posté 16 Octobre 2004 Posté 16 Octobre 2004 (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é 16 Octobre 2004 par petit-ourson
Sarc Posté 16 Octobre 2004 Auteur Posté 16 Octobre 2004 (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 ... 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é 16 Octobre 2004 par sarc
petit-ourson Posté 16 Octobre 2004 Posté 16 Octobre 2004 Pour ne pas passer par un global, il faudrait ajouté un membre à ta class qui fait référence à ton tableau sans le recopier pour autant.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant