Domanda

Ho appena aggiornato da 1,7 a ZF ZF 1.9, e quasi tutto lavora benissimo ... tranne che per Autoloader.

Vecchio:

require_once('Zend/Loader.php');  
Zend_Loader::registerAutoload();

require_once 'Zend/Loader/Autoloader.php';  
$loader = Zend_Loader_Autoloader::getInstance();  
$loader->registerNamespace('MySiteName_');
$loader->setFallbackAutoloader(true);

I file che ho bisogno di auto-carico non sono per lo più namespace (perché è un grande progetto da pre-namespacing). Sono nelle seguenti directory:

  • / application / controller
  • / common / modelli
  • / biblioteca
  • / vendor

Il sito sembra funzionare bene, tranne che non riesce a trovare /library/Form.php
Ha usato per essere in grado di, ma non più. Funziona se posso aggiungere un require_once 'library / form.php', ma che non dovrebbe essere necessario, e mi sono preoccupato che se mi metto a fare che in alcuni luoghi, avrò bisogno di abbandonare il caricatore automatico e hard-code tutto comprende. Ho pensato di aggiungere "setFallbackAutoloader (vero)", in combinazione con avere "libreria" nel mio percorso di inclusione sarebbe risolvere il problema, ma non lo feci.

Il mio percorso di inclusione è:
.: / Users / lofye / Documents / htdocs / mysitename / fornitore
: / Users / lofye / Documents / htdocs / mysitename /
comune : / Utenti / lofye / Documenti / htdocs / mysitename / comuni / modelli
: / Users / lofye / Documents / htdocs / mysitename /
biblioteca : / Users / lofye / Documents / htdocs / mysitename

Qualsiasi aiuto molto apprezzato!

È stato utile?

Soluzione

Hai detto che funziona se si fa questo:

require_once 'library/Form.php';

Ma, se il percorso della libreria è inclusa, allora si dovrebbe essere specifica, come autoloader fa, in questo modo:

require_once 'Form.php';

Prova a digitare require_once 'form.php'; nello script. Ha bomba? Poi, il percorso di inclusione non ha / biblioteca, e che avrebbe bisogno di essere fissato.

Altri suggerimenti

Il caricatore automatico è solo andare a cercare le classi di carico che iniziano con MySiteName_. Prova ad aggiungere Form come uno spazio dei nomi forse?

$loader->registerNamespace('Form');

Il nome della classe all'interno del file library/Form.php deve essere Form. Qual è il tuo nome della classe?

ho provato qui e sta funzionando benissimo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top