これはおそらく基本的な質問ですが、このチュートリアルに従っていると、ある時点でコードは次のようになります。
<?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;
}
}
ただし、これを使用すると
<?php include "class_lib.php";?>
</head>
<body id="theBody">
<div>
<?php
$maria = new person("Default");
$dave = new employee("David Knowler");
echo $dave->get_name();
?>
このエラーが発生します
致命的なエラー: C:\Users\danny\Documents\Workspace\test\index.php の 13 行目のコンテキスト '' から保護されたメソッド employee::get_name() を呼び出します
問題は、従業員クラスの get_name() 関数に protected を追加したときのようですが、これがチュートリアルでオーバーライドする好ましい方法であるように思えます。何か案は?