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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top