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

Petit nouveau ! | 3 Messages

22 juin 2010, 11:41

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 :) ?

d0m
Mammouth du PHP | 1141 Messages

22 juin 2010, 13:47

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();
    }
}