设计一个用户类-oop-php
嗯。我正在应用程序中设计类 我有一个用户类。现在我需要列出用户,获取特定用户的信息等 起初,我试图做的是:设计一个用户类-oop-php,php,oop,Php,Oop,嗯。我正在应用程序中设计类 我有一个用户类。现在我需要列出用户,获取特定用户的信息等 起初,我试图做的是: class User { private $userId; private $name; private $age; function __construct() { // the code to get the user details from db and assign it to the properties.
class User
{
private $userId;
private $name;
private $age;
function __construct()
{
// the code to get the user details from db and assign it to the properties.
}
// get the list of all the users
public function getUserList()
{
}
// add a new user
public function addUser()
{
}
// gets the username
public function getUserName($userId)
{
return $this->name;
}
}
以下是我的疑问:
谢谢我认为更好的选择是创建两个类,Users和User
class Users implements IteratorAggregate {
/**
* @return User[]
*/
public function getUserList() {}
public function addUser(User $user) {}
/**
* @return User
*/
public function getUser($userId) {}
public function getIterator() {
return new ArrayIterator($this->getUserList());
}
}
class User {
public $userId;
public $name;
public function __construct() {}
}
您的域对象不应该关心甚至不应该知道数据库。你可能想看看数据映射器模式:在
User
类中破坏封装有什么意义?@Jannis:你能告诉我为什么要使用IteratorAggregate吗。如果我直接调用getUSerList()返回一个数组呢?@user1285659您可以直接foreach这个类,如下所示:$list=newuserlist();foreach($user作为$user列出){}@djay根本没有意义。重点是演示如何将其编写为两个类而不是一个类。我太懒了,没法写能手和二传手;)