gpt4 book ai didi

PHP OOP 在实例中保存对象实例还是仅保存 id?

转载 作者:行者123 更新时间:2023-12-04 05:29:09 24 4
gpt4 key购买 nike

我有点困惑如何在 PHP 中实现以下 OO 结构。我有一个类(class)' User ' 和一个类 ' UserGroup '一个'用户'是一个'用户组'的一部分。在数据库中,用户表有一个字段'user_group_id '。什么是实现此目的的良好且“服务器友好”的方式?我是在我的用户类中创建 UserGroup 的实例还是只将 user_group_id 保存在变量中?

注意:示例中并未显示所有方法。

选项 1

class User
{
private $userGroupId;
public function setGroupId($userGroupId)
{
$this->userGroupId = $userGroupId;
}
}

选项 2
class User
{
private $userGroup;
public function setGroup($userGroupId)
{
$this->userGroup = new UserGroup($userGroupId);
}
}

我对选项 2 的问题是它可能会消耗更多的服务器资源,因为它为每个用户创建了一个全新的用户组实例。但我不确定这一点,我找不到任何关于这方面的信息。

我的问题:什么是好的实现?

最佳答案

这是 User 之间典型的 has-a 关系和 UserGroup .换句话说 User有一个 UserGroup .所以我认为类User应该引用UserGroup .如果您太担心和/或资源有限,您可以创建 UserGroup 的实例。在 User真正需要的时候。

实现将类似于:

class User
{
private $userGroupId;
private $userGroup = null;
public function setGroupId($userGroupId)
{
$this->userGroupId = $userGroupId;
}

public function getGroup()
{
if ($this->userGroup === null)
{
$this->userGroup = new UserGroup($this->userGroupId);
}
return $this->userGroup;
}
}

关于PHP OOP 在实例中保存对象实例还是仅保存 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12842446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com