nova Zend carregador Autoloader não encontrar arquivos
-
18-09-2019 - |
Pergunta
Eu acabei de atualizar a partir ZF 1,7 a ZF 1,9, e quase tudo funciona bem ... exceto para Autoloader.
antiga:
require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();
Novo:
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('MySiteName_');
$loader->setFallbackAutoloader(true);
Os arquivos que eu preciso auto-carga são na sua maioria não namespaced (porque é um grande projeto do pré-namespacing). Eles estão nos seguintes diretórios:
- / application / controladores
- / common / modelos
- / biblioteca
- / fornecedor
O site parece funcionar bem, exceto que ele não pode encontrar /library/Form.php
É usado para ser capaz de, mas não mais. Ele funciona se eu adicionar um require_once 'biblioteca / form.php', mas isso não deve ser necessário, e eu estou preocupado que se eu começar a fazer isso em alguns lugares, eu vou ter de abandonar o autoloader e codificar tudo inclui. Pensei acrescentando "setFallbackAutoloader (true)", combinado com ter "biblioteca" no meu caminho de inclusão iria corrigi-lo, mas isso não aconteceu.
Meu incluem caminho é:
.: / Users / lofye / Documentos / htdocs / mysitename / fornecedor
: / Users / lofye / Documents / htdocs / mysitename / Tablet comum
: / Users / lofye / Documents / htdocs / mysitename / common / modelos
: / Users / lofye / Documents / htdocs / mysitename / biblioteca
: / Users / lofye / Documents / htdocs / mysitename
Qualquer ajuda muito apreciada!
Solução
Você disse que ele funciona se você fizer isso:
require_once 'library/Form.php';
Mas, se o seu caminho da biblioteca está incluído, então você deve estar indicando, conforme o autoloader faz, como este:
require_once 'Form.php';
Tente digitar require_once 'form.php'; em seu script. Será que bombardear? Então, o caminho incluem não tem / biblioteca, e que precisam ser corrigidos.
Outras dicas
Seu carregador automático só vai tentar carregar classes que começam com MySiteName_
. Tente adicionar Form
como um namespace talvez?
$loader->registerNamespace('Form');
O nome da classe dentro do library/Form.php
arquivo deve ser Form
. Qual é o seu nome de classe?
Eu testei aqui e está funcionando bem.