我有一个包含 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
对象,因为我有属于所有这些类别的用户。
非常感谢任何反馈,如果我需要澄清任何事情,我会经常回来查看。