Version complète: sur le forum Webmaster Hub : classes PHP
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
sarc
Bonjour a tous biggrin.gif

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à :

CODE
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é biggrin.gif

Merci de vos réponses wink.gif
petit-ourson
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é) :

CODE
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" ?
sarc
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 biggrin.gif... 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 happy.gif
petit-ourson
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.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.