zend modelli quadro posizione e caricamento automatico
-
09-10-2019 - |
Domanda
Ho iniziato a documentare me stesso per quanto riguarda Zend Framework come io presto iniziare ad usarlo in produzione. Tutto stava funzionando benissimo, fino a quando ho iniziato a utilizzare e lavorare con i modelli:.)
La posizione predefinita per i modelli, sulla base delle raccomandazioni Zend, è application/models/DbTable
, dove saranno gettati tutti i modelli. Questa posizione mi costringe a citarne un modello come Application_Model_DbTable_Actors
. Per me, questo è un nome molto lungo per un modello e non un facile da usare uno.
La struttura di directory che voglio ottenere simile a questa:
application/
models/
actors/
ActorsMapper.php
Actor.php
books/
BooksMapper.php
Book.php
ecc.
Quindi tutto i miei modelli risiederà nella directory models
, ma raggruppate nelle proprie directory.
Naming per ogni classe dovrebbe essere ActorsMapper
o Actor
(Essi saranno entrambi estendere Zend_Db_Table
o Zend_Db_Row
).
Sono consapevole del fatto che nei miei controllori se un'istanza di un modello usando qualcosa come $actors = new ActorsMapper()
mi metterò un Fatal error: Class not found
e che per questo che sto chiedendo il vostro aiuto con questo.
Per risolvere questo problema ho provato ad aggiungere la mia directory models
all'include_path:
-
prima prova
aggiunto
includePaths.models = APPLICATION_PATH "/models"
a Application.ini
, ma questo non ha nemmeno inserirlo al percorso includono
-
secondo tentativo:
esplicitamente aggiunto il percorso utilizzando
set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), realpath(APPLICATION_PATH . '/models'), get_include_path(), )));
Ma anche se questo si aggiunge che il percorso tra quelli inclusi, l'errore persiste ancora.
ho visto questa denominazione di modelli della href="http://framework.zend.com/manual/en/zend.db.table.html" rel="nofollow"> documentazione ufficiale del Zend_Db_Table
, ma non ho trovato nulla legati alla loro autoloading.
Grazie a tutti per qualsiasi soluzione.
P.S. la versione Zend Framework è 1.11.1
Soluzione
Zend Framework ha una configurazione in autoloader. Funziona mappando il nome della classe per l'albero di directory, in modo Application_Model_Actors_Actor
otterrà mappato
Application\
Models\
Actors\
Actor.php
Purtroppo, non è possibile cambiare questo. La funzionalità che si sta cercando è namespacing ma è supportata solo (ed è in infatti una delle caratteristiche principali) di Zend Framework 2 che è ancora in fase di sviluppo.
Altri suggerimenti
tenta di estendere Zend_Application_Bootstrap_Bootstrap allora si può provare questo
$ loader = $ this-> getResourceLoader ();
$ loader-> addResourceType ( 'libri', 'modelli / Libri', 'Model_Book'); $ Loader-> addResourceType ( 'attori', 'modelli / attori, 'Model_Actor');
Sto anche cercando di implementare questo tipo di implementazione in un modello di osservatore.