アプリケーション用のクラスの基盤をセットアップしたいと思います。そのうちの 2 つは個人と学生です。人は学生かもしれないし、そうでないかもしれませんし、学生は常に人です。学生が「人」であるという事実により、継承を試すようになりましたが、人のインスタンスを返す DAO があり、その人が学生であり、学生関連のメソッドを呼び出します。
class Person {
private $_firstName;
public function isStudent() {
// figure out if this person is a student
return true; // (or false)
}
}
class Student extends Person {
private $_gpa;
public function getGpa() {
// do something to retrieve this student's gpa
return 4.0; // (or whatever it is)
}
}
class SomeDaoThatReturnsPersonInstances {
public function find() {
return new Person();
}
}
$myPerson = SomeDaoThatReturnsPersonInstances::find();
if($myPerson->isStudent()) {
echo 'My person\'s GPA is: ', $myPerson->getGpa();
}
これは明らかに機能しませんが、この効果を達成するための最良の方法は何ですか? 人には生徒が「いない」ため、作曲は私の心に正しく響きません。必ずしも解決策を探しているわけではありませんが、検索する用語やフレーズに過ぎないかもしれません。自分がやろうとしていることを何と呼べばいいのかわからないので、あまり運がありませんでした。ありがとうございました!