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.