Bonjour,

Après avoir suivi l'excellent premier tuto sur la POO, je me suis lancé et j'ai créé une class que j'espère évolutive pour les besoins de mon site. Toutefois, je ne sais pas comment faire pour appeler la fonction d'une class dans une autre fonction de la même class. Voici mon code :

class iptc
{
    function idp($file, $iptc)
    { 
        GetImageSize($file, $info);
        $v = iptcparse($info["APP13"]);
        $idp = $v[$iptc][0]; 
        return $idp;

}

    function yyy()
    {
        idp("img/img01.jpg", '2#005');
    }
}

Merci d'avance !

11 réponses


Carouge10
Réponse acceptée

Il vous faudra aussi les passer en paramètre dans la fonction yyy

function yyy($file, $iptc){
    return $this->idp($file, $iptc);
 }

Bonjour,

Si tu dois appeller une méthode qui ce trouve dans la même class

$this->idp("...", "...");

Si la méthode est static

self::idp("...", "...");

Cela ne fonctionne malheureusement pas avec le code que j'ai communiqué dans ce post. J'ai droit à un plantage de ma page :-(

Oups, non c'est bon, j'ai résolu le pb, enfin pas complètement car je n'obtiens pas le résultat voulu mais je cherche... Merci à toi.

Je ne comprends pas pourquoi la fonction yyy ne fonctionne pas. Peux-tu m'aider ?

Bonjour, il vous manque un return:

return $this->idp(....);

Effectivement si tu veux que ta méthode "yyy" retourne le résultat de "idp()" tu dois ajouter un "return" comme dans l'exemple de @Carouge10

Merci de votre réponse, mais cela ne fonctionne toujours pas. Voici le code :

class iptc { 
function idp($file, $iptc) {
    GetImageSize($file, $info);
    $v = iptcparse($info["APP13"]);
    $idp = $v[$iptc][0]; 
    return $idp;
}

function yyy()
{
    idp($file, $iptc);
    return $this->idp;

}
}

$id = ($result->idp('img/img001.jpg', $idp[id])); 
$num = substr($id, 9, 8); 
$nat = substr($id, 0, 1);
$col = substr($id, 1, 2); 
$col2 = substr($id, 3, 2); 
$cat = substr($id, 5, 2); 
$scat = substr($id, 7, 2);

<?php echo $id;?>

Ce code fonctionne, mais si j'appelle la fonction yyy au lieu de idp, ça ne fonctionne plus. Quelque chose m'échappe, mais quoi ?

Merci.

Regarder ce que j'ai écrit et ce que vous avez écrit...

Faut-il ajouter les variables $file et $iptc, comme ceci :

     return $this->idp($file, $iptc);

Je l'ai fait, mais ça n'a rien changé.
Je ne vois pas...

En effet, ça me semble logique et c'est d'ailleurs ce que j'avais fait au début mais sans return. En fait, j'appelais la fonction idp dans ma fonction yyy avec this alors qu'un retour du résultat idp suffit.
Merci à vous !