Каков наилучший способ уменьшить количество запросов, когда у класса DAO есть методы, которые используют один и тот же результат?

У меня есть вспомогательный класс DAO (я не знаю, если это так), чтобы получить категории из базы данных MySQL, структура в основном такова:

<?php require_once '../include/PDOConnectionFactory.php'; class CategoryDAO extends PDOConnectionFactory { /** * * @var PDO $conn */ private $conn; public function __construct() { $this->conn = PDOConnectionFactory::getConnection(); } } ?> 

Этот класс имеет эти методы (некоторые тогда):

 getMaxLevel() getAllCategories() getAllCategoriesOfLevel($level) haveChildCategory($categoryName) getIdCategory($categoryName) getCategoryName($idCategory) 

Изменить : Тело метода getAllCategories () похоже на это ниже, и почти весь метод этого класса вызывает этот getAllCategories ():

 public function method() { try { $stmt = $this->conn->prepare("SELECT * FROM category"); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { echo $e->getMessage(); } return $result; } 

Я не знаю, какой лучший подход к сокращению избыточности запросов, я думаю в них:

  1. Введите экземпляр объекта класса, вызовите getAllCategories () и вызовите другие методы, передавая результат по параметру.
  2. Имейте частную собственность с результатом getAllCategories (), заполняйте, когда объекты создаются с помощью __construct ().

Но в этих случаях я вижу этот недостаток:

  1. Не кажется хорошим использование ООП.
  2. Объект может быть устаревшим после UPDATE или INSERT.

Если моя проблема концептуальна в ООП, пожалуйста, дайте мне знать.