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.