Hoje vamos ver algo simples que pode ser feito no php5 que pouca gente conhece: a função “__autoload ”.
Com ela podemos incluir classes seguindo padrão, fazendo com que todos os includes do php sejam feitos de forma dinâmica.
Isso ajuda em:
- Ao alterar algo ou incluir uma classe nova, não precisamos checar se foi dado include em todos os outros arquivos.
- Garante que seja incluído arquivos que realmente sejam usados, evitando carregar classes que não estão sendo usadas, fazendo com que não haja uso desnecessário de memória.
- Ajuda a criar e seguir um padrão para as classes e onde elas se encontram.
Isso pode ser feito de uma maneira bem simples.
Primeiro precisamos definir um padrão. Vamos colocar todas as classes dentro de um pasta chamada “classes” e definir que quando criarmos o arquivo de uma classe, seguirá esse formato: “NomeDaClasse.class.php”.
Agora que padronizamos podemos criar nossa função:
function __autoload($class_name) {
require_once (‘classe/’.$class_name.’.class.php’);
}
O __autoload, pertence ao conjunto de funções internas dentro do php. Toda vez que chamamos uma classe, ele terá essa função.
Nesse caso ele está pegando o nome da classe e dando o include usando o nome dela, por exemplo:
$a = new Usuario();
O __autoload vai entender que você está chamado a classe de nome “Usuario”, e vai chamar essa função trocando o $class_name pelo nome da classe chamada. A string ficará assim: “classe/Usuario.class.php” Que será o arquivo que ele vai chamar.
Agora podemos criar um arquivo chamado config.php e nele escrever essa função, e incluir no nosso index principal.
Assim toda vez que chamarmos uma classe, ele procura e adiciona automaticamente essa classe no include_once, que por sua vez o carrega na memória somente quando for chamada.
Pode não parecer, mas o ganho de desempenho é bem grande, ainda mais quando se trabalha com sistema de grande porte.
Espero que essa dica seja útil! Esta prática resolve muitos problemas de performance.
Richard Brochini, trabalha a 8 anos com desenvolvimento de projetos para TI. Vencedor da categoria Jogos Mobile na SBGames 2008, ganhador do prêmio Porto Seguro como melhor jogo on-line, vencedor de melhor jogo feito para Tv Digital da TOTVz, dentre outras competições. Formado em Ciência Da Computação pela Universidade Anhembi Morumbi ,Certificado pela Impacta Tecnologia. Procura sempre aprender novas tecnologias, com esse diferencial, está sempre capacitado para atender os principais projetos da área. Hoje em dia está muito empolgado com a onda Smart Watch e já desenvolveu alguns protótipos.
Para entrar em contato: Richard@brochini.com