Как получить список пользователей, не нарушив ООП?
Всем привет Интересует такой вопрос:
Есть класс User, в нём реализованы методы add (добавляет юзера в БД), get(получает юзера из бд).
С вызовом проблем нет: создаю экземпляр класса, далее $user->add(параметры); и тд
Возник вопрос: если мне нужно получать всех пользователей из БД, то как это сделать так, чтобы не нарушить ООП?
Если внутри User прописать getAll, то как-то странно, что юзер получает всех юзеров
Возможно, нужно использовать новый класс UserList? Или какие рекомендации в таком случае?
Ответы (1 шт):
Автор решения: Alex Khonko
→ Ссылка
Если хотите прям совсем по ООП, то как вариант:
class User{
}
class UserCollection
{
private $users = [];
public function __construct(... $users)
{
foreach ($users as $user)
{
if(is_array($user))
{
array_walk($user,[$this,'add']);
}
else{
$this->add($user);
}
}
}
private function add(User $user)
{
$this->users[] = $user;
}
}
interface UserRepositoryInterface{
public function get(): User;
public function getAll(): UserCollection;
}