Conheça a função __autoload e esqueça que um dia precisou usar listas gigantes de includes
por Tobias em 30.04.2009 12:49 Desenvolvimento web, Geral, php
E ae gente, blz?
Bom o post de hoje é pequeno e rápido e com certeza incrívelmente útil, vou mostrar hoje uma técnica que estou usando pra facilitar minha vida na hora de desenvolver meus códigos, o assunto de hoje é o __autoload, uma funçãozinha que está me economizando preciosos minutos no desenvolvimento.
O funcionamento dele é básico, e funciona assim:
Quando você tenta instanciar uma classe o php verifica se essa classe já existe, se não existir ele tenta carregar ela de acordo com a função __autoload que estiver no script.
ex:
1 2 3 | function __autoload($class_name) { require_once $class_name.'.php'; } |
digamos que em algum momento do meu código eu tentei instanciar a classe Groups
1 | $groups = new Groups; |
se a classe Groups não existir até o momento o php vai tentar incluir o arquivo Groups.php (de acordo com a minha função __autoload) antes de disparar um erro. Ta mas ele sempre vai procurar só pelo nome da classe? depende… tudo depende de como você faz a sua função __autoload, veja o exemplo abaixo para entender.
1 2 3 | function __autoload($class_name) { require_once 'my/path/to/classes/'.$class_name.'.php'; } |
nesse exemplo acima o php vai procurar pela classe na path determinada na função antes de disparar o erro.
Bom é isso, só pra terminar vou dar uma dica que eu estou usando aqui, que é simplesmente adicionar as paths de onde as classes estão ao include_path.
1 2 3 4 5 6 7 8 9 | <?php set_include_path(get_include_path() . PATH_SEPARATOR . './libs/'); function __autoload($class_name) { require_once $class_name.'.php'; } ?> |
Vou explicar o código:
3 | set_include_path(get_include_path() . PATH_SEPARATOR . './libs/'); |
Adiciona ao include_path do php a pasta ./libs/
5 6 7 | function __autoload($class_name) { require_once $class_name.'.php'; } |
Define a função __autoload que irá procurar pelas classes quando forem instanciadas.
Ufa… cabou, é isso ai gente, como sempre dúvidas, sugestões e puxões de orelha nos comentários por favor :D.
abraço e até a próxima,
ps. esse foi o post mais rápido que eu já postei, da idéia de postar até o fim da revisão do texto demorou 26 min oO.
Tags: autoload, class, classes, php, __autoload


25.12.09 01:25 at 01:25
O post é velho mas acho que resolve meu problema assim que eu entender melhor heheh … obrigado