Sarc Posté 16 Octobre 2004 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
petit-ourson Posté 16 Octobre 2004 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sarc Posté 16 Octobre 2004 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
petit-ourson Posté 16 Octobre 2004 Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant