我有一个名为User的“大师班”。基本上它所做的就是用__construct()初始化用户名。我创建了一个名为“Groups”的独立组。 groups类允许我检索用户所属的“组”。例如:
public function getGroups($username) {
return $usersgroups; // there's much more to this, obviously.
}
$groups = new Groups();
$usergroups = getGroups("admin");
但是,我可以使用我的用户类并执行以下操作吗?:
$user = new User("admin");
$user->groups->getGroups();
答案 0 :(得分:1)
是的,只需在User的构造函数中初始化$groups
成员变量。您可以在类中的任何方法中将其引用为$this->groups
。
答案 1 :(得分:1)
您已经意识到我们应该能够从User
的实例中获取用户的群组这一事实很好。
在最基本的层面上,您应该拥有setGroup
和getGroups
方法。您甚至可以包含另一个名为setGroups
的方法,该方法会添加Group
个实例(或GroupCollection
)数组。
为了让你走上正确的道路,你可能想做类似的事情:
class Users {
protected $groups = array();
public function __construct ()
{
// ...
}
public function setGroup ( Group $group )
{
array_push( $this->groups, $group ); // may require private addGroup method depending on how complex the registration is
}
public function getGroups ()
{
return $this->groups;
}
}
您会注意到我使用了方法setGroup
和getGroups
。就像我上面说的那样,你可以包含另一个名为setGroups
的方法。它有点复杂,但基本上你需要的是另一个叫做GroupCollection
的整个类,它本质上是一个荣耀的Groups
数组。这看起来像是:
class Users {
protected $groups;
public function __construct ()
{
$this->groups = new GroupCollection;
}
public function setGroups ( GroupCollection $groupCollection )
{
$this->groups = $groupCollection;
}
public function addGroups ( GroupCollection $groupCollection )
{
$this->group->merge( $groupCollection );
}
public function addGroup ( Group $group )
{
$this->groups->addGroup ( $group );
}
public function getGroups ()
{
return $this->groups; //returns a GroupCollection
}
}
你可以对这些东西非常详细 - 这完全取决于你正在尝试做什么以及它有多复杂。上面我使用了更高级的域对象,但如果您刚刚开始,我建议您更多地阅读OOP。我举了几个例子来展示你如何深入了解这些物品,并随意玩耍并提出更多问题。