stratégias de nomenclatura e carregamento automático PHP eficient

Como a maioria dos desenvolvedores da Web atualmente, estou aproveitando os benefícios da sólida arquitetura MVC para aplicativos e sites da Web. Ao fazer MVC com PHP, o carregamento automático obviamente é extremamente úti

Eu me tornei fã despl_autoload_register simplesmente definindo um único__autoload(), pois isso é obviamente mais flexível se você estiver incorporando diferentes módulos básicos, cada um usando seu próprio carregamento automático. No entanto, nunca me senti muito bem com as funções de carregamento que escrevo. Elas envolvem muita verificação de cadeia e varredura de diretório para procurar possíveis classes a serem carregada

Por exemplo, digamos que eu tenho um aplicativo que possui um caminho base definido comoPATH_APP e uma estrutura simples com diretórios denominadosmodels, views econtrollers. Costumo empregar uma estrutura de nomes em que os arquivos são nomeadosIndexView.php eIndexController.php dentro do diretório apropriado, e os modelos geralmente não possuem um esquema específico por padrão. Talvez eu tenha uma função loader para essa estrutura assim registrada comspl_autoload_register:

public function MVCLoader($class)
{
    if (file_exists(PATH_APP.'/models/'.$class.'.php')) {
        require_once(PATH_APP.'/models/'.$class.'.php');
        return true;
    }
    else if (strpos($class,'View') !== false) {
        if (file_exists(PATH_APP.'/views/'.$class.'.php')) {
            require_once(PATH_APP.'/views/'.$class.'.php');
            return true;
        }
    }
    else if (strpos($class,'Controller') !== false) {
        if (file_exists(PATH_APP.'/controllers/'.$class.'.php')) {
            require_once(PATH_APP.'/controllers/'.$class.'.php');
            return true;
        }
    }
    return false;
}

Se não for encontrado depois disso, talvez eu tenha outra função para verificar os subdiretórios no diretório de modelos. No entanto, todo o if / else-ing, verificação de cadeia e verificação de diretório parece ineficiente para mim, e eu gostaria de melhorá-l

Estou muito curioso sobre quais estratégias de nomeação e carregamento automático de arquivos outros desenvolvedores podem empregar. Estou procurando especificamente boas técnicas para o carregamento automático eficiente, e não alternativas ao carregamento automático.

questionAnswers(3)

yourAnswerToTheQuestion