Por que essas 2 linhas na função de carga automática do Zend Bootstrap
-
25-09-2019 - |
Pergunta
Vi exemplos que têm esse bloco de código e outros exemplos que não tiveram as duas linhas comentadas talvez não. Qual é exatamente o objetivo dessas 2 linhas?
$moduleLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH)
);
$autoloader = Zend_Loader_Autoloader::getInstance(); //MAYBE NOT
$autoloader->setFallbackAutoloader(true); //MAYBE NOT
return $moduleLoader;
Adicionado:
Dadas as respostas, é bom fazer dessa maneira? Existe uma sobrecarga ou qualquer coisa que não seja boa nisso, ou essa é a prática padrão?
Solução
A segunda linha é uma espécie de solução alternativa para os casos em que o AutoLoader de estrutura padrão não é suficiente e deve ser evitado, porque diminui as coisas (mesmo que às vezes seja muito útil).
Parece que o AutoLoader de fallback não estará disponível no ZF 2.0.
Outras dicas
Isso fará com que o automóvel especificado seja usado para qualquer espaço para nome e classes que não sejam nomes, ignorando efetivamente o parâmetro 'namespace' se não houver automaturas automáticas para esse espaço para nome for definido.
É apropriado usar $autoloader->setFallbackAutoloader(true)
Quando você tem classes que não pertencem a um espaço para nome ou precisa usar classes em muitos namespaces diferentes.
A primeira linha é trivial, a segunda linha é mencionada no manual: significa que o Zend AutoLoader tentará carregar (automaticamente) todas as classes, não apenas as classes mencionadas como prefixo, ou automático registrado.
O primeiro é obter a instância do automóvel, é isso. Como o Autoloader é um singleton, ele só pode ter uma instância. Se essa instância ainda não existir, ela será criada.
A segunda linha é fazer com que o AutoLoader atue como uma captura - sempre que algo não é encontrado, o automóvel é acionado.