A função autoload é utilizada no PHP para fazer o carregamento automático das classes.
Sempre que desejarmos criar um objeto, temos que ter obrigatoriamente a classe responsável pela criação do objeto carregada na memória, caso contrário o PHP retornará um erro. Para carregar classes na memória podemos carregar todas as classes no inicio do documento utilizando o comando include_once ou com o mesmo comando imediatamente antes de instanciar um objeto.
O grande problema é que o include_once carrega na memória as classes mesmo que você não use. Muitas vezes uma classe só é utilizada se o usuário fizer alguma requisição no sistema, um determinado passo, ou se o usuário der um clique em um botão, etc. Para resolver e simplificar tal procedimento o PHP disponibiliza a função de “carregamento automático”, que é a função autoload, que carrega a classe apenas quando um objeto dessa classe for criada, tornando o processo de carregamento das classes para a memória dinâmico.
Veja abaixo um exemplo simples:
classe funcionario
< ? php class Funcionario { private $Codigo; private $Nome; private $Salario; //função para “setar” um valor no atributo salario function SetSalario($Salario) { //antes de passar o valor do salario verificamos se o mesmo e um numero e positivo, se sim, passamos o valor para o atributo if (is_numeric($Salario) and ($Salario > 0)) { $this->Salario = $Salario; } } function SetNome($Nome) { $this->Nome = $Nome; } function SetCodigo($Codigo) { $this->Codigo = $Codigo; } function Mostrar() { echo "O nome é: {$this->Nome}<br>"; echo "O salário é: R\$ {$this->Salario}<br>"; echo "O Código é: {$this->Codigo}"; } } ?>
arquivo autoload
< ? php // funcao que carrega as classes automaticamente function __autoload($classe) { //busca dentro da pasta classes a classe necessaria... include_once "classes/{$classe}.class.php"; } //criando um objeto pessoa $funcionario = new Funcionario(); $funcionario -> SetCodigo(789); $funcionario -> SetNome ('Mario Andrade'); $funcionario -> SetSalario (2500); $funcionario -> Mostrar(); ?>
Comentários
Uma resposta para “Função autoload no PHP”
Gostei, simples e objetivo. O __autoload te permite criar um objeto sem ter que carregar essa classe na memória de forma prévia. E sim quando for solicitada pelo objeto.