- Existe o diretório principal (artigo) que contem os outros diretórios e o arquivo Index.php.
- Diretórios classe e sistema (contendo a diretória listagem)
- E todos os arquivos estão com o mesmo nome (exemplo.php)
- O arquivo sistema/configuracao.php irá conter o método __autoload();

Primeiro vamos criar a classe Sistema_Exemplo, essa será a nomenclatura de todas as classes. Partindo da raiz todos os diretórios serão inclusos no nome da classe, separados por “_” underline e o ultimo nome será o nome do arquivo php.
PHP
<?php class Sistema_Exemplo { protected $_att; public function __construct($att){ $this->_att = $att; } public function get(){ } public function set($att){ $this->_att = $att; } } ?>www.revistaphp.com.br
Sistema_Exemplo: Bom não tem muito o que dizer, é uma classe comum. O arquivo será sistema/exemplo.php.
PHP
<?php class Sistema_Listagem_Exemplo { private $_escolha = null; public function __construct($escolha = null){ $this->_escolha = $escolha; } public function getLista(){ $lista = "<B>LISTA DE FRUTAS</B><BR>"; foreach($this->_lista as $key=>$fruta){ $lista .= ($fruta == $this->_escolha) ? } return $lista; } } ?>www.revistaphp.com.br
Sistema_Listagem_Exemplo: Ai já utiliza mais de um nível de diretórios, que é explicito no nome da classe, essa classe recebe o nome de uma das frutas e deixa ela em negrito na listagem . O arquivo será sistema/listagem/exemplo.php.
PHP
<?php class Classe_Exemplo extends Sistema_Exemplo{ public function getDirClasse(){ } } ?>www.revistaphp.com.br
Classe_Exemplo: Esta classe estende Sistema_Exemplo, sem precisar dar include na classe, mesma idéia para implements.
Agora vamos para o arquivo configuracao.php, nele que irá conter a função __autoload().
PHP
<?php function __autoload($classe) { return true; } require_once $arquivo; return true; } else { <i style='color:#3333FF'>%s</i>",$arquivo); } }else{ require_once $classe.".php"; } } ?>www.revistaphp.com.br
Bom quando for instanciado uma classe, como por exemplo:
PHP
$objeto = new Classe_Exemplo("Teste");www.revistaphp.com.br
A função _autoload é chamada recebendo como parâmetro a string “Classe_Exemplo”.
Linhas
Linha 6: Passa para o vetor $caminho todos os diretórios e o nome do arquivo.
Linha 7: Troca o “_” por “/” e inclui a extensão, no caso a string “Classe_Exemplo” ficará “classe/exemplo.php”.
Linha 8: Vetor com os diretórios principais, possibilitando uma validação da classe.
Linha 9: Verifica se o primeiro diretório está contido no vetor de diretórios.
Linha 10: Verifica se o arquivo existe.
Linha 11 e 12: Inclui o arquivo na pagina.
Linha 14 e 15: Mostra uma mensagem que o arquivo não foi encontrado.
Linha 18: Possibilita a inclusão de um arquivo que esta na raiz.
Agora vamos testar no arquivo index.php.
PHP
<?php require_once("sistema/configuracao.php"); $classe_exemplo = new Classe_Exemplo("Teste"); $lista = new Sistema_Listagem_Exemplo("framboesa"); ?>www.revistaphp.com.br
Neste exemplo, só é preciso incluir o arquivo de configuração e instanciar as classes quando quiser J.
|
Diretório Sistema: Teste |
Espero que tenha ajudado, pois essa função é uma mão na roda para programar aplicações de pequeno e grande porte, créditos também para os colegas Everton e Anselmo que ajudaram nessa estrutura. Qualquer dúvida é só falar, próximos artigos vou escrever mais sobre as intercepções no PHP5. Valeu tudo de bom para vocês.