Pourquoi ne puis-je remplacer cette fonction protégée en PHP?

C'est probablement une question de base, mais im suivant ce tutoriel et à un moment, le code ressemble à ceci.

<?php

class person
{
    public $name;
    public $height;
    protected $social_security_no;
    private $pin_number = 3242;

    public function __construct($person_name)
    {
        $this->name = $person_name;
    }
    public function set_name($new_name)
    {
        $this->name = $new_name;
    }

    protected function get_name()
    {
        return $this->name;
    }

    public function get_pin_number_public()
    {
        $this->pub_pin = $this->get_pin_number();
        return $this->pub_pin;
    }

    private function get_pin_number()
    {
        return $this->pin_number;
    }

}

class employee extends person
{

    public function __construct($person_name)
    {
        $this->name = $person_name;
    }

    protected function get_name()
    {
        return $this->name;
    }
}

Cependant quand j'utilise ce

<?php include "class_lib.php";?>
    </head>
    <body id="theBody">
    <div>

<?php
$maria = new person("Default");

$dave = new employee("David Knowler");
echo $dave->get_name();
?>

j'obtiens cette erreur

Erreur fatale: Appel à la méthode protégée de l'employé::get_name() à partir de
contexte " dans C:\Users\danny\Documents\Workspace\test\index.php sur
ligne 13

Le problème semble être quand j'ajoute protégé à l'get_name() dans la classe d'employés, mais il me semble que c'est la meilleure façon de remplacer dans le tutoriel. Des idées?

  • protégé méthodes ne peuvent pas être appelées à l'extérieur de la classe
InformationsquelleAutor lorless | 2013-10-09