L'appel d'une enfant de la méthode de la classe parente en PHP

Avoir la classe suivante hiérarchie:

class TheParent{

    public function parse(){
        $this->validate();
    }

}

class TheChild extends TheParent{

    private function validate(){
        echo 'Valid!!';
    }
}

$child= new TheChild();
$child->parse();

Qu'est-ce que la séquence d'étapes de ce travail?

Le problème, c'est quand j'ai couru que le code qu'il a donné le message d'erreur suivant:

Fatal error: Call to private method TheChild::validate() from context 'TheParent' on line 4

Depuis TheChild hérite de TheParent ne devrait pas $this appelé dans parse() référence à l'instance de $child, donc validate() sera visible à parse()?

Remarque:

Après avoir fait quelques recherches, j'ai trouvé que la solution de ce problème pourrait soit faire de la validate() fonction protected selon ce commentaire dans le manuel PHP, mais je ne suis pas bien comprendre pourquoi il fonctionne dans ce cas.

La deuxième solution est de créer une abstract protected méthode validate() dans le parent et l'écraser à l'enfant (qui sera redondant) pour la première solution que protected méthodes d'un enfant peut être consulté à partir de la mère?!!

Quelqu'un peut-il expliquer comment l'héritage fonctionne dans ce cas?

OriginalL'auteur Songo | 2012-10-17