Ответы пользователя по тегу ООП
  • Как идеологически правильно делать Lazy Load и делать ли её вообще?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Есть магический метод __get (с двумя нижними подчёркиваниями)
    class Category
    {
        private $children = null;
    
        public function __get($property)
        {
            if ($property === 'children') {
                if ($this->children !== null) return $this->children;
                else {
                    $this->children = $this->getChildren();
                    return $this->children;
                }
            } else {
                throw 'Undefined property';
            }
        }
    
        private function getChildren()
        {
            // TODO: запрос к базе и получение результата
        }
    }
    
    $category = new Category();
    someAction($category->children); // в первый раз будет запрос
    showSubCategories($category->children); // второй и послудеющий раз возьмёт уже из приватного поля

    А к вопросу нужности - зачастую в ORM это настраивается, какие поля брать сразу, а какие лениво. Так что полностью зависит от задачи.
    Ответ написан
    Комментировать