Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Carregar classes com o spl_autoload_register

Como fazer essa classe procurar nos dois diretórios?

function carregaClasse($nomeDaClasse) {
        require_once("class/models/".$nomeDaClasse.".php"); 
        require_once("class/daos/".$nomeDaClasse.".php");  

}

spl_autoload_register("carregaClasse");
2 respostas
solução!

Oi Andrê, tudo bem? você pode verificar primeiro se o arquivo existe em um diretório ou em outro da seguinte forma:

function carregaClasse($nomeDaClasse) {
    if(file_exists("class/models/".$nomeDaClasse.".php")){
        require_once("class/models/".$nomeDaClasse.".php"); 
       } else {
        require_once("class/daos/".$nomeDaClasse.".php");  
      }
}

spl_autoload_register("carregaClasse");

Lembrando que é sempre bom verificar se o arquivo existe, então você pode fazer o seguinte:

<?php

function carregaClasse($nomeDaClasse) {
  $pastas = ['daos', 'models'];

  foreach ($pastas as $pasta) {
    $arquivo = "class/{$pasta}/{$nomeDaClasse}";
    if(file_exists($arquivo)){
      require_once($arquivo);
    }
  }
}

spl_autoload_register("carregaClasse");

Quando novas pastas forem necessárias, você só vai precisar adicionar o nome no array de pastas. :)

Deu certo, só adicionei o .php neste segundo código com array.

$arquivo = "class/{$pasta}/{$nomeDaClasse}.php";

Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software