PHP PDO вывести все данные из таблицы используя MVC

Если мы используем MVC, то в одном файле мы сначала пишем логику, а потом выводим логику. Используем цикл, но т.к. файл подключается только один раз, то использование цикла бессмысленно. Получаю вот это, но в таблице минимум 30 колонок. Получается что нужно писать весь php код вывода прямо в файле вёрстки?

Скрин

Index.php (верстка)

<div class="books">
                    <div class="book">
                        <div class="book__image">
                            <img src="" alt="">
                        </div>
                        <div class="book__title"><?php echo $name ?></div>
                        <div class="book__author">Автор: <span class="bold_info"><a href="#"><?php echo $author ?></a></span></div>
                        <div class="book__genre">Жанр: <span class="bold_info"><?php echo $genre ?></span></div>
                        <div class="book__pages">Страниц: <span class="bold_info"><?php echo $pages ?></span></div>
                        <a href="#"><button>Читать</button></a>
                    </div>
</div>

Main.php (логика)

class Main //extends Model
{
    public static function showBooks() {
        $db = new Db;
        $result = $db::GetRow("SELECT * FROM books");
        return $result;
    }

    // public static function showBooks() {
    //     $db = new Db;
    //     $result = $db::GetBoth("SELECT * FROM books");
    //     while($res = $result) {
    //         return [
    //             'name'      =>      $result['name'],
    //             'author'    =>      $result['author'],
    //             'genre'     =>      $result['genre'],
    //             'pages'     =>      $result['pages']
    //         ];
    //     }
    // }
}

MainController.php (отправляем логику в верстку)

class MainController extends Controller
{
    public function indexAction() : void {

        //debug(Main::showBooks());

        $vars = [
            'style'     =>      '/public/styles/indexStyle.css',
            'script'    =>      '/public/scripts/indexScript.js',
            'name'      =>      Main::showBooks()['name'],
            'author'    =>      Main::showBooks()['author'],
            'genre'     =>      Main::showBooks()['genre'],
            'pages'     =>      Main::showBooks()['pages']
        ];
        $this->view->render('Главная страница', $vars);
    }
}

Ответы (0 шт):