Initiationau class et au foncions

Par Frank Hélin, il y a 11 ans


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

Frank Hélin, il y a 11 ans

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

skp, il y a 11 ans

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("...", "...");
Frank Hélin, il y a 11 ans

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

Frank Hélin, il y a 11 ans

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.

Carouge10, il y a 11 ans

Bonjour, il vous manque un return:

return $this->idp(....);
skp, il y a 11 ans

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

Frank Hélin, il y a 11 ans

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.

Carouge10, il y a 11 ans

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

Frank Hélin, il y a 11 ans

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...

Carouge10, il y a 11 ans

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

function yyy($file, $iptc){ return $this->idp($file, $iptc); }
Frank Hélin, il y a 11 ans

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 !