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にまったく慣れていないので、わからないことがあれば我慢してください。
(サイド質問、上記のクラスは何と見なされますか、ビュー?)
これらを設定するために、Modelクラスであると理解しているものを使用します(そうですか?)。
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
ます。これらすべてのカテゴリに分類されるユーザーがいるからです。
フィードバックをいただければ幸いです。何か明確にする必要がある場合は、頻繁に確認します。