O Básico
Construtores e Destrutores
Classes e Objetos (PHP 5)
PHP Manual

## Autoloading Objects

Muitos desenvolvedores ao desenvolver aplicações orientadas a objeto criam um arquivo PHP para cada definição de classe. Um dos maiores contratempos é ter de escrever uma longa lista de includes no início de cada script(um include para cada classe necessária).

Com PHP 5 isso não é mais necessário. Você pode definir uma função __autoload que é automaticamente chamada no caso de você tentar usar uma classe/interface que ainda não foi definida. Ao chamar essa função o 'scripting engine' tem uma última chance para carregar a classe antes que o PHP falhe com erro.

> Nota: Exceções disparadas em função __autoload não pode ser obtida num bloco catch, resultando em um erro fatal.

> Nota: Autoloading não é disponível usando PHP em modo interativo CLI.

> Nota: Se o nome da classe é usado e.g. em call_user_func() então ela pode conter alguns perigosos caracteres como ../. É recomendado não usar entrada de usuário nestas funções ou verificar a entrada na __autoload().

Exemplo #1 Exemplo de Autoload

Essse exemplo tenta carregar as classes MyClass1 e MyClass2 dos arquivos MyClass1.php e MyClass2.php respectivamente.

`<?php
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
?>`

Exemplo #2 Outro exemplo de Autoload

Este exemplo tenta carregar a interface ITest.

`<?php
function __autoload($name) {
var_dump($name);
}
class Foo implements ITest {
}
/*
string(5) "ITest"
Fatal error: Interface 'ITest' not found in ...
*/
?>`

O Básico
Construtores e Destrutores
Classes e Objetos (PHP 5)
PHP Manual