Est-il possible d'appeler la fonction d'une class dans une fonction n'appartenant pas à cette class ? Merci.

11 réponses


skp
Réponse acceptée

Si tu veux accéder à une méthode de class directement dans ton fonction tu peux faire comme ça

//ta fonction qui n'appartient à aucune class
function maFonction()
{
    //tu créer un instance de ta class
    $class = new Class();
    //tu appelles ta méthode
    $resultat = $class->maMethode();
}

Si tu veux récuperer l'instance ou le résultat

//un endroit dans ton code
$resultat = $class->iptc($url, $code);

//ta fonction
function maFonction()
{
    global $resultat;
    //OU
    global $class;
    $resultat = $class->iptc($url, $code);
}

Si tu dois uniquement passer le résultat le mieux c'est de faire

//ta fonction
function maFonction($resultat)
{
    //ton code
}

//un endroit dans ton code
$resultat = $class->iptc($url, $code);
$newResultat = maFonction($resultat);

oui en lui passant l'instance de la class où il y a la fonction ou avec un extends suivant ce que vous désirez.

Mais comment passe t-on une instance ? Avec un return et $this ?

non en paramètre

extends ne me semble pas adapaté car je ne souhaite pas passé ma fonction de classe dans une autre classe...

Je sèche, je ne trouve pas. Un peu d'aide ?

Tu peux créer une instance de ta class directement dans ta méthode exemple :

class MaClass
{
    public function MaMethode()
    {
        $autreClass = new AutreClass();
        $autreClass->autreMethode();
    }
}

ou la solution de @Carouge10

class MaClass
{
    public function MaMethode(AutreClass $autreClass)
    {
        $autreClass->autreMethode();
    }
}

//ailleurs dans ton code
$maClass = new MaClass();
$autreClass = new AutreClass();
$maClass->MaMethode($autreClass);

Désolé mais je ne comprends pas autreMethode();

Je ne veux pas passé de fonction de class dans une autre class, mais dans une fonction n'appartenant à aucune classe.

Bonsoir,
tu peux créer un fichier avec ta fonction ("fonction.php" par exemple)

<?php

function fonction() {
    // Fait des truc
}

et il te suffit de faire un

include 'fonction.php';

Ok Carouge, je crois comprendre. Corrige moi si je me trompe. J'ai affecté une variable à ma fonction de classe :

$newvaleur = $result->iptc($url, $code);

Ensuite :

 global $newvaleur;

dans ma fonction, c'est ça l'idée ?