【发布时间】:2019-08-20 01:25:19
【问题描述】:
我正在使用 PHP OOP 创建一个小型应用程序,并且正在为子对象如何关联或作为父对象的一部分而苦苦挣扎。
我有一个 Team 对象和一个扩展 Team 的 Player 对象。我有一些团队对象和许多玩家对象,我希望玩家对象成为特定团队对象的一部分。例如:
我想我正在努力理解我应该如何处理这个问题。我想要的示例:
- 我使用名为“巴西”的对象实例化 Team 类
- 我用名为“玩家一,玩家二”的对象多次实例化 Player 类
- 我希望我的应用了解 Player one 对象是巴西对象的子对象
- 然后,例如,当我在表单中选择巴西时,我想列出属于巴西对象的所有球员等
目前我没有在数据库中存储任何东西,只是代码。在这一点上,我的代码实际上真的很乱,我觉得它没有帮助
class Team {
private $TeamName;
/**
* @return mixed
*/
public function getTeamName()
{
return $this->TeamName;
}
/**
* @param mixed $TeamName
*/
public function setTeamName($TeamName)
{
$this->TeamName = $TeamName;
}
}
class Player extends Team
{
private $playerName;
private $position;
/**
* @return mixed
*/
public function getPlayerName()
{
return $this->playerName;
}
/**
* @param mixed $playerName
*/
public function setPlayerName($playerName)
{
$this->playerName = $playerName;
}
/**
* @return mixed
*/
public function getPosition()
{
return $this->position;
}
/**
* @param mixed $position
*/
public function setPosition($position)
{
$this->position = $position;
}
/**
* @return mixed
*/
public function getTeamName()
{
parent::getTeamName();
}
/**
* @param mixed $TeamName
*/
public function setTeamName($TeamName)
{
parent::setTeamName($TeamName);
}
}
【问题讨论】:
-
首先,玩家不是团队,但是玩家拥有团队。所以让玩家继承Team是不正确的,而是在Player类中有一个team属性。
-
啊哈,这很有道理。所以基本上我不应该扩展 Team 类。在 player 中有一个 team 属性,这是否实际上使 Team 类变得多余?
-
“所以基本上我不应该扩展 Team 类”...是的。 “这实际上使 Team 类变得多余”...不,您创建新的团队对象并在同一团队的所有玩家对象之间共享它(同一个团队对象),我会给你是答案中的一个例子。