Domanda

Ho una cartella con classi personalizzate in un ZF 1.10 applicazione. La cartella si trova in / biblioteca. Come faccio a sapere ZF dove sono? Sia Application.ini e impostare index.php il percorso della libreria, ma poi ZF non riesce a trovare i file.

Grazie

È stato utile?

Soluzione

Ci sono molte soluzioni possibili. Il più comune, quando si usa Zend Application, è quello di registrare il namespace in application.ini aggiungendo:

autoloaderNamespaces[] = "Example_"

Altre soluzioni:

  • Aggiungi il tuo dir a include_path utilizzando set_include_path() (soluzione ad hoc)
  • Segui le convenzioni di denominazione PEAR (in modo che il percorso di risoluzione del problema relativo era possibile)

Istituito autoloader in Bootstrap.php:

protected function _initAutoloader()
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace("Example"); // or Example_
}

Alla fine, istituire modulo o risorsa caricatore automatico , ad es.

$resourceLoader->addResourceTypes(array(
     'acl' => array(
        'path'      => 'acls/',
        'namespace' => 'Acl',
    ),
    'example' => array(
        'path'      => 'examples/',
        'namespace' => 'Example',
    ),        
));

Altri suggerimenti

Spesso ci imbattiamo in un problema di scrivere le nostre funzioni personalizzate o classi e dove metterli.

Quindi, per aggiungere classe personalizzata (o libreria personalizzata) si può usare i namespace autoloader di Zend Framework.

Aggiungere la riga di seguito nel file di Application.ini

autoloaderNamespaces.custom = "Custom_"

o

autoloaderNamespaces[] = "Custom_"

Tutte le classi personalizzate saranno tenute sotto directory di libreria. Creare un nome di cartella 'Custom' (che è definito in Application.ini) nella directory di libreria.

Classi saranno prefisso 'Custom_' alla dichiarazione nel file (ad esempio Custom_Test)

Ora possiamo usare questa classe come $test = new Custom_Test(), nella nostra applicazione.

questo vecchio esercitazione Zend Framework da Rob Allen , in particolare a pagina 4, dove si parla del programma di avvio automatico. I suoi tutorial più recenti, come eccellente come sono, sembrano contare su Zend strumento per fare la creazione dell'applicazione e sorvolare su questo.

Una cosa che mi ha allarmato, però, era che lei ha detto che la cartella si sta cercando di includere è pubblico / biblioteca. A meno che non intenzionalmente desidera condividere il codice con il mondo, vorrei vivamente di posizionarlo altrove ... a meno che non hai un diverso cartella "pubblica" non condiviso con il pubblico (nel qual caso si può prendere in considerazione rinominandolo per evitare confusioni).

Aggiungi la tua libreria personalizzata per composer.json:

"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},

e aggiornamento run compositore

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