Php 如何在另一个类中使用一个类
我有一个叫做用户的“主类”。基本上,它所做的就是用_construct()初始化用户名。我创建了一个单独的组,名为“组”。groups类允许我检索用户所属的“组”。例如:Php 如何在另一个类中使用一个类,php,oop,Php,Oop,我有一个叫做用户的“主类”。基本上,它所做的就是用_construct()初始化用户名。我创建了一个单独的组,名为“组”。groups类允许我检索用户所属的“组”。例如: public function getGroups($username) { return $usersgroups; // there's much more to this, obviously. } $groups = new Groups(); $usergroups = getGroups("admin")
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();
是的,只需在User的构造函数中初始化
$groups
成员变量。您可以在类中的任何方法中将其引用为$this->groups
。您已经意识到我们应该能够从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;
}
}
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
}
}
您会注意到我使用的方法是setGroup
和getGroups
。正如我上面所说,您可以包括另一个名为setGroups
的方法。这有点复杂,但基本上您需要的是另一个名为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;
}
}
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。我给你举了几个例子来说明如何深入地使用这些对象,并且可以随意地玩和问更多的问题。是的,你可以这样做。开始阅读OO设计。:)你为什么不试试呢?