Page 1 sur 1

Executer une fonction implémentée dans une class héritante

Posté : 22 juin 2010, 11:41
par JBzh
Bonjour,


Je souhaite exécuter une fonction appelée dans la class parent mais implémentée dans la class héritante.
Exemple :
class ClassParent
{
    function HelloWorld() {
        //implémentée dans la class enfant
        echo 'Erreur';
    }

    function SaySomething() {
        $this->HelloWorld();
    }
}

Class ClassEnfant extends ClassParent
{
    function HelloWorld() {
        echo 'hello world!';
    }
}

$foo = new ClassEnfant();
$foo->SaySomething();
Ce qui m'affiche 'Erreur', au lieu du 'hello world' que j'aimerai avoir. J'avais pensé à un child::HelloWorld() à la place du $this->HelloWorld() mais je ne trouve pas de documentation sur child::
Un coup de main :) ?

Re: Executer une fonction implémentée dans une class héritante

Posté : 22 juin 2010, 13:47
par d0m
salut,
après avoir testé ton code (simple copier-coller dans un fichier php), il s'avère que celui ci affiche bien "Hello World" et non "erreur".
Pour que ce code affiche "erreur", il faut implémenter la classe mère comme ceci :
class ClassParent
{
    function HelloWorld() {
        //implémentée dans la class enfant
        echo 'Erreur';
    }

    function SaySomething() {
        self::HelloWorld();
    }
}