modelos de Zend Framework ubicación y carga automática
-
09-10-2019 - |
Pregunta
He empezado a documentarme con respecto Zend Framework dado que luego empezar a utilizarlo en la producción. Todo estaba funcionando bien, hasta que empecé a utilizar y el trabajo con los modelos:.)
La ubicación predeterminada de los modelos, basado en las recomendaciones de Zend, es application/models/DbTable
, donde serán arrojados en todos los modelos. Esta ubicación me obliga a nombrar un modelo como Application_Model_DbTable_Actors
. Para mí, este es un nombre muy largo para un modelo y no una fácil de usar uno.
La estructura de directorios que quiero obtener es como la siguiente:
application/
models/
actors/
ActorsMapper.php
Actor.php
books/
BooksMapper.php
Book.php
etc.
Así que todos mis modelos residirá en el directorio models
, pero agrupados en sus propios directorios.
nomenclatura para cada clase debe ser ActorsMapper
o Actor
(Ellos se extenderán tanto Zend_Db_Table
o Zend_Db_Row
).
Soy consciente del hecho de que en mis controladores si una instancia de un modelo usando algo como $actors = new ActorsMapper()
voy a conseguir un Fatal error: Class not found
y que por eso que estoy pidiendo su ayuda con esto.
Para resolver este problema He intentado añadir mi directorio models
a include_path:
-
primer intento
añadido
includePaths.models = APPLICATION_PATH "/models"
a application.ini
pero éste ni siquiera añadirlo a la ruta de inclusión
-
segundo intento:
añadió explícitamente la ruta utilizando
set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), realpath(APPLICATION_PATH . '/models'), get_include_path(), )));
Pero incluso si esto se suma que la ruta entre los incluidos, el error persiste.
he visto esta denominación de los modelos de la href="http://framework.zend.com/manual/en/zend.db.table.html" rel="nofollow"> documentación oficial de la Zend_Db_Table
, pero no pude encontrar nada relacionado con autoloading ellos.
Gracias a todos por las soluciones.
p.s. Zend Framework versión 1.11.1 es
Solución
Zend Framework tiene una acumulación de cargador automático. Funciona mediante la asignación del nombre de la clase que el árbol de directorios, por lo Application_Model_Actors_Actor
conseguirá asignada a
Application\
Models\
Actors\
Actor.php
Por desgracia, no se puede cambiar esto. La función que está buscando es namespacing pero sólo se admite (y está en de hecho una de las características principales) de Zend Framework 2 que todavía está siendo desarrollado.
Otros consejos
Trate de extender Zend_Application_Bootstrap_Bootstrap entonces puede intentar éste
$ loader = $ this-> getResourceLoader ();
$ loader-> addResourceType ( 'libros', 'modelos / libros', 'Model_Book'); $ Loader-> addResourceType ( 'actores', "modelos / actores, 'Model_Actor');
También estoy tratando de implementar este tipo de aplicación en un patrón de observador.