Erro ao passar dados para a view com PHP

Opa galera, tudo blz? Então estou desenvolvendo um projeto MVC com PHP, que por sinal é o meu primeiro, e me deparei com um erro incomum que não consigo resolver. No meu model eu seleciono meus dados e no meu Controller eu retorno eles para uma view chamada home, o problema é que ele está retornando o erro de : Undefined index: admins in: quando tento chamar esses dados do banco de dados. Vou postar partes do meu código aqui.

Model:

class Admin {

    private $db;

    public function __construct()

    {

        $this->db = new DataBase;

    }

    public function lerAdmins(){

        $this->db->query("SELECT * FROM admins");

        return $this->db->resultados();

       }

    }

Controller:

class Admins extends Controller{

    //construct que chama o model

    public function __construct()

    {

        $this->adminModel = $this->model("Admin");

    }

    public function home(){

        $dados = [

            'admins' => $this->adminModel->lerAdmins()

        ];

       $this->view('paginas/admins/home', $dados); 

    }
}

Class controller que chama as views e models:

<?php

class Controller {

    public function model($model){

        require_once '../app/Models/'.$model.'.php';

        return new $model;

    }

    public function view($view, $dados = []){

        $arquivo = ('../app/Views/'.$view.'.php');

        if(file_exists($arquivo)):

            require_once $arquivo;

        else:

            die('Método não encontrada');

        endif;

    }

}

Na página home eu estou chamando assim:

<?php $dados['admins'] ?>

Eu sei que como eu estou chamando um array eu preciso de um foreach o problema é que o erro mesmo com o foreach persiste se alguém pudesse me ajudar ficaria muito grato.

Mostra a classe DataBase

<?php

class DataBase{

    private $host = 'localhost';

    private $usuario = 'root';

    private $senha = '';

    private $banco = 'microinfo';

    private $dbh;

    private $stmt;

    public function __construct()

    {

        $dsn = 'mysql:host='.$this->host.';dbname='.$this->banco;

        $opcoes = [

            PDO::ATTR_PERSISTENT => true,

            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION

        ];

        try {

            $this->dbh = new PDO($dsn,$this->usuario,$this->senha,$opcoes);

        } catch (PDOException $e) {

            print "Error!: " . $e->getMessage() . "<br/>";

            die();

        }

        

    }

    public function query($sql){

        $this->stmt = $this->dbh->prepare($sql);

    }

    public function bind($parametro, $valor, $tipo = null){

        if(is_null($tipo)):

            switch (true):

                case is_int($valor):

                        $tipo = PDO::PARAM_INT;

                    break;

                    case is_bool($valor):

                        $tipo = PDO::PARAM_BOOL;

                    break;

                    case is_null($valor):

                        $tipo = PDO::PARAM_NULL;

                    break;

                

                default:

                   $tipo = PDO::PARAM_STR;

            endswitch;

        endif;

        $this->stmt->bindValue($parametro, $valor, $tipo);

    }

    public function executa(){

        return $this->stmt->execute();

    }

    public function resultado(){

        $this->executa();

        return $this->stmt->fetch(PDO::FETCH_OBJ);

    }

    public function resultados(){

        $this->executa();

        return $this->stmt->fetchAll(PDO::FETCH_OBJ);

    }

   

    public function totalResultados(){

         return $this->stmt->rowCount();

    }

    public function ultimoIdInserido(){

        return $this->dbh->lastInsertId();

    }

    

}

Não entendo muito de PHP, mas pelo que pesquisei, esse PDO_OBJ vai retornar as linhas em um objeto e você está usando a syntax de array.

O que seria esse “admins”?
O que você tá tentando fazer exatamente?

O que eu to tentando fazer é chamar os dados do banco no método Admin armazenar em um array e enviar para a view home onde eu mostrarei os dados.

Quais são as colunas da tabela?

O nome da tabela é admins e ela tem as colunas id, nome, email e senha

E dessa tabela você quer mostrar o que? Os nomes dos admins?

NÃO CARA!! Eu quero retornar os dados de todos os admins. Nessa forma o correto seria usar um foreach assim com eu citei no final da pergunta. Deste modo, ficaria:

<?php foreach($dados['admins'] as admins)?>
//ai eu chamaria os dados
<?=admins['nome']?>
<?=admins['email']?>
<?php endforeach;?>

O problema ta sendo que o array dados na posição admins NÃO ESTÁ SENDO ENVIADO PARA ESSA VIEW.

Faça um dump do retorno de lerAdmins() no método home() para ver se está carregando certo.