Я самоучка
Сделал свой костыльный движок и теперь пытаюсь его сделать более ООП'шным
Есть БД:
пользователь(user_id, image_id_avatar)
картинки(image_id, image_src)
Есть класс User:
private $users = [];
private $user = [];
private $userID = null;
public function __construct($userID = null, $user = [], $users = [])
{
$this->userID = $userID;
$this->user = $user;
$this->users = $users;
}
public function findBy($params = [], $multiple = false)
{
$Users = App::DB()->select('users', [], $params); //получаю данные из бд
if (count($Users)){
if ($multiple){
$this->users = $Users;
return $this;
}
if (count($Users) > 1)
return $this;
$this->user = $Users[0];
$this->userID = $Users[0]['User_ID'];
return $this;
}
return $this;
}
public function refactor($options = [])
{
$userDB = $this->user;
$image = $userDB['Image_ID_Avatar']
? STORAGE_DOMAIN .Image::getImageByID($userDB['Image_ID_Avatar'])['Image_Path']
: null;
$this->user = [
'hash' => $userDB['User_Hash'],
'nickname' => $userDB['User_Nickname'],
'avatar' => $image
];
return $this;
}
Image::getImageByID
возвращет
src картинки:
public static function getImageByID($image_id)
{
$Image = App::DB()->select('images', [], ['image_id' => $image_id]); // новый запрос в БД
return $Image[0];
}
Все это работает
Но меня смущает следующее:
Если мне нужен не один человек, а допустим 100
В таком случае, если у всех них заданы картинки, то произойдет 100 новых подключений за картинками.
Как это все можно оптимизировать и сохранить некое ООП если оно вообще у меня есть :)