A função __autoload() do php serve para acabar, ou pelo menos, suavizar o problema ter de fazer inúmeros includes para cada ficheiro de uma classe numa aplicação orientada a objectos.
A utilidade da função é, quando tentamos instanciar uma classe ou fazer uma chamada à mesma, caso esta ainda não esteja carregada (incluída) é feita uma chamada à função __autoload, que recebe como parâmetro o nome da classe que estamos a ter criar, ficando assim : __autoload($class).
Deste modo, podemos utilizar esta função de modo a que ela procure o ficheiro com esta classe e o inclua, para não termos necessidade de preocupar-nos com isso. Esta função é especialmente útil em aplicações que seguem o modelo de “uma classe por ficheiro”, sendo assim se criamos uma classe chamada “Utilizador”, denominamos esse ficheiro como “Utilizador.class.php”.
Desta forma podemos criar a __autoload($class) de forma que procure o ficheiro devido.
Vou mostrar um exemplo:
< ?php
function __autoload($class) {
if(!findClass($class,"./")) {
echo "<h1>Classe não encontrada: $class !!";
exit(0);
}
}
function findClass($class,$dir) {
$apontador = opendir($dir);
while($file = readdir($apontador)) {
$file_path = $dir."/".$file ;
if($file == "." or $file == "..")
continue;
else if(is_dir($file_path)) {
if(findClass($class,$file_path))
return true ;
} else if($file == $class.".class.php") {
require_once($file_path);
return true ;
}
}
return false ;
}
?>
Uma explicação rápida sobre o código acima, na função autoload() chama-se a função findClass, caso não seja encontrada a classe escreve-mos um erro e terminamos o programa.
Em findClass é onde a “magia” acontece, recebemos a classe que procuramos, e a directoria a localizar, percorremos essa directoria à procura do ficheiro com o modelo $class.class.php , sendo $class o nome da classe. Caso não encontremos o ficheiro pretendido, a função chama recursivamente findClass nas directorias encontradas.
Ao encontrarmos o ficheiro ele inclui o mesmo, ou seja, na verdade faz um require e retorna true.
FEV











Sobre o Autor
Carlos Gonçalves é um Freelancer com bastante experiência em linguagens de programação e webdesign. Vocacionado para as novas tecnologias, aposta na qualidade dos serviços, atendimento rápido e sempre disponível para melhor satisfazer os seus clientes. Autor do site cgoncalves.com