É ruim usar carregamento automático em PHP?
Pergunta
A partir php.net :
No PHP 5, isso não é mais necessário. Você pode definir uma função
__autoload()
que é chamado automaticamente no caso de você tentando usar uma classe / interface de que ainda não foi definido. Ao chamar esta função o mecanismo de script é dada uma última chance de carregar a classe antes de PHP falha com um erro.
Agora estou querendo saber, é má prática para usar apenas __autoload
para carregar as classes apropriadas em um site dinâmico?
A forma como o meu site está configurado é incluir arquivos no arquivo index.php
, por exemplo, http://www.site.com/index.php?p=PAGE-I-WANT-TO-LOAD
Então, se eu estou na seção de fóruns ou a seção de blogs do meu site, eu quero apenas as classes e funções necessárias para ser carregado, então eu uso autoload mas nunca incluir um arquivo manualmente, eu deveria estar usando __autoload
como último resort ou é o que estou fazendo muito bem, mesmo em um sistema de tráfego alto?
Solução
Bad? Não __autoload()
é uma das minhas adições favoritas para PHP 5. Ele remove a responsabilidade (e irritação) de ter manualmente para incluir / exigem os arquivos de classe necessários para a sua aplicação. Dito isto, cabe a você como o desenvolvedor para garantir que apenas as 'classes apropriadas' são carregados. Isso é facilmente feito com um esquema de nomenclatura estruturada e estrutura de diretórios. Há muitos exemplos on-line de como usar corretamente __autoload (), que uma pesquisa no Google e você vai encontrar muita informação.
Outras dicas
Autoload é uma boa maneira de carregar apenas o que as classes é necessária.
Em PHP 5> = 5.1.2, a maioria dos problemas com o antigo __autoload () desapareceram, graças a spl_autoload_register () .
Agora estou querendo saber, é má prática para apenas __autoload uso para carregar as classes apropriadas em um site dinâmico?
Nem um pouco. Você pode contar com carregamento automático, tudo que você precisa fazer é elaborar uma convenção boa nomeação e implementar um carregador automático eficiente.
Há uma questão importante a considerar. Autoloading e Zend Guard não jogam bem juntos, porque Zend Guard tende a mudar o nome de coisas, o que significa que a convenção de nomenclatura que você decidiu usar muito provavelmente não será o mesmo. Se você estará usando Zend Guard (ou qualquer outro obfuscator para que o assunto), você provavelmente será forçado a incluir todos os arquivos manualmente.
Aqui está uma citação do guia do usuário Zend Guard:
aulas Autoloading não irá funcionar uma vez que o nome do arquivo no disco não faria coincidir com o nome da classe ofuscado.
O único perigo para __autoload () é se você definir uma função autoloading pobres. Geralmente, tudo o que você está indo para obter em termos de um acerto de desempenho é um pouco buscas em disco como PHP procura os arquivos corretos que contêm as classes. A vantagem é se livrar de todas essas chamadas include()
irritantes.
Se você está preocupado com o desempenho a este nível, então você já deve estar usando um cache opcode tais como APC.