Задать вопрос
  • Как сделать класс управления записями?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос, как всегда, совсем не о том.

    Код этих двух "классов управления записями" по сути ведь не отличается друг от друга. Отличается только формат этих записей, в котором класс выдаёт результат работы - либо массив, либо объект.

    То есть вопрос на самом деле - в каком формате работать с книгами в коде - в виде массивов или объектов, а не как ими управлять.

    И ответ на него очевиден - поскольку в объект можно вкрячить кучу функционала, например метод validateISBN(), то однозначно работать с объектами удобнее.
    Ответ написан
  • Как сделать класс управления записями?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    второй более норм, но есть моменты:
    1. это репозиторий, класс который сохраняет сущности в хранилище
    поэтому
    BookRepository
    2. create update сделать приватными и можно заменить на save
    public function save(Model $model): void{
       if($model->getId()>0){
          $this->update($model);
       }
       else{
         $this->create($model);
       }
    }

    3. public function initDatabase(PDO $db) - это контруктор
    public function __construct(PDO $db)
    4. public function get(Book $book) - что это? public function findById($id): ?Book - более правильно
    5. public function getAll() - правильных ход, но если 1млн записей, все вытащите? нужна критерия выборки и коллекция на выходе а не массив
    public function getAll(Criteria $criteria): BookCollection

    п.с вообще то если ООП то у вас Book должна быть богатой моделью предметной области в данном случае это Rich Model где поведение модели размазано по слоям
    Ответ написан