Держаться ООП или тут это излишне? Я самоучка Сделал свой костыльный движок и теперь пытаюсь его сделать более ООП'шным Есть БД: пользователь(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 новых подключений за картинками. Как это все можно оптимизировать и сохранить некое ООП если оно вообще у меня есть :)
Для оптимизации процесса получения изображений для нескольких пользователей, вы можете использовать кэширование. Например, вы можете кэшировать изображения после их получения из базы данных и в последующих запросах сразу использовать кэшированные изображения, минимизируя количество запросов к базе данных.
Также, вы можете рассмотреть возможность предварительной загрузки изображений для нескольких пользователей за один запрос к базе данных, чтобы избежать повторных запросов. Например, вы можете загрузить все изображения для всех пользователей в виде массива и использовать их в дальнейших операциях.
Что касается сохранения ООП, вы можете рассмотреть возможность создания отдельного класса, отвечающего за работу с изображениями и их кэширование. Таким образом, вы сможете разделить ответственности между классами и добиться более четкой структуры вашего кода в соответствии с принципами ООП.
Для оптимизации процесса получения изображений для нескольких пользователей, вы можете использовать кэширование. Например, вы можете кэшировать изображения после их получения из базы данных и в последующих запросах сразу использовать кэшированные изображения, минимизируя количество запросов к базе данных.
Также, вы можете рассмотреть возможность предварительной загрузки изображений для нескольких пользователей за один запрос к базе данных, чтобы избежать повторных запросов. Например, вы можете загрузить все изображения для всех пользователей в виде массива и использовать их в дальнейших операциях.
Что касается сохранения ООП, вы можете рассмотреть возможность создания отдельного класса, отвечающего за работу с изображениями и их кэширование. Таким образом, вы сможете разделить ответственности между классами и добиться более четкой структуры вашего кода в соответствии с принципами ООП.