我有一个包含 3 个表的数据库。person, player, 和coach. 该person表包含player和coach的共同点,例如firstName、lastName和email。,player和coach表然后有一个链接返回到person带有personId字段的表。每个访问该站点的人都有一个person条目。此外,一些用户可能也有player或coach条目。数据库以这种方式设置以保持规范化。
在我的代码中,我有一个person、player和coach类。和player继承coach自person。下面是person和player类的截断版本。
class person{
private $firstName;
private $lastName;
public function __construct($firstName, $lastName){
$this->firstName = $firstName;
$this->lastName = $lastName;
}
}
class player extends person{
private $position;
private $jersey;
public function __construct($firstName, $lastName, $position, $jersey){
parent::__construct($firstName, $lastName);
$this->position = $position;
$this->jersey = $jersey;
}
}
作为提醒,我对 OOP 很陌生,所以如果有我不知道的事情,请多多包涵。
(附带问题,上面考虑的类是什么,视图?)
现在为了填充这些,我使用我理解的模型类(对吗?)。
class personModel{
public function getPerson($personId){
$sql = "SELECT * FROM `person` WHERE `personId` = '$personId'";
//skipping some sql stuff in here
return new person($sql['firstName'], $sql['lastName']);
}
}
但现在我的问题的核心是,我该如何实现playerModel?
class playerModel{
public function getPlayer($playerId){
//would I do a join SQL here?
//or would I call personModel::getPerson()
//or do both these options couple the two classes too tightly?
}
}
某种factory课程会是另一种选择吗?如果是这样,那将如何进行?
我需要能够构造person、player和coach对象,因为我有属于所有这些类别的用户。
非常感谢任何反馈,如果我需要澄清任何事情,我会经常回来查看。