Я развиваюсь в PHP некоторое время, но только недавно перешел на подход ООП.
Один вопрос, который продолжает возникать для меня, - "как далеко" идти с продуктом ООП, особенно с точки зрения скорости выполнения и ресурсов памяти и т.д.
Например, скажем, у меня есть 2 объекта, User и Listing
Листинги всегда связаны с отдельным пользователем. UserId является свойством листинга, поэтому я знаю, к какому пользователю он относится. Время от времени в рамках метода листинга мне нужно получить доступ к одному свойству соответствующего пользователя.
Насколько я могу видеть (просьба сообщить, если нет) У меня есть 3 варианта, как это сделать.
-
Создайте новый пользовательский объект и получите доступ к ресурсу с достаточным доступом через $user → theProperty
-
Сделать требуемое свойство локальным свойством листинга и заполнить его, когда листинг инициализируется (например, через соединение sql)
-
Запросить базу данных непосредственно для получения свойства пользователя, требуемого с помощью идентификатора пользователя
Мне кажется, что опции 1 и 2 более строго подчиняются правилам ООП, но имеют производительность, из-за инициализации всего объекта просто для извлечения 1 свойства. Вариант 3 был бы наименее интенсивным с памятью, но обойдется ООП в целом.
Кроме того, с точки зрения заполнения объектов при создании большинство моих объектов получают большинство своих свойств, заполненных одним методом "fill", вскоре после инициализации (отсюда требуется только 1 запрос БД). Будет ли это вообще рассматриваться как лучшая практика или было бы целесообразнее использовать отдельные методы для получения этих свойств, заполняя их и когда они нужны?
Я понимаю, что на это могут не быть "правильные" ответы, но может ли кто-нибудь дать совет о лучших способах подхода к этой ситуации?
Большое спасибо Ник