Pregunta

Tengo una carpeta de clases personalizadas en una aplicación 1.10 ZF. La carpeta se encuentra en la biblioteca /. ¿Cómo puedo saber ZF dónde están? Tanto application.ini y index.php establecer la ruta a la biblioteca, pero luego ZF no puede encontrar los archivos.

Gracias

¿Fue útil?

Solución

Hay muchas soluciones posibles. El más común, cuando se usa aplicación Zend, es registrar el espacio de nombres en application.ini añadiendo:

autoloaderNamespaces[] = "Example_"

Otras soluciones:

  • Haz tu dir para include_path usando set_include_path() (solución ad hoc)
  • Siga PERA convenciones de nombres (por lo que el camino era posible resolver)

Configurar cargador automático en Bootstrap.php:

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

Finalmente, estableció módulo o cargador automático de recursos , por ejemplo.

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

Otros consejos

A menudo nos encontramos un problema de escribir nuestras propias funciones personalizadas o clases y dónde colocarlos.

Así que para añadir clase personalizada (o biblioteca personalizada) se puede utilizar espacios de nombres cargador automático de Zend Framework.

Añadir el siguiente línea en el archivo application.ini

autoloaderNamespaces.custom = "Custom_"

o

autoloaderNamespaces[] = "Custom_"

Todas las clases personalizadas se mantendrá bajo directorio de la biblioteca. Crear un nombre de carpeta 'Custom' (que se define en application.ini) en el directorio de la biblioteca.

Las clases serán prefijo 'Custom_' en declaración en el archivo (por ejemplo Custom_Test)

Ahora podemos utilizar esta clase como $test = new Custom_Test(), en nuestra aplicación.

este tutorial mayores Zend Framework Rob Allen , específicamente en la página 4, en el que habla sobre el programa previo. Sus tutoriales más recientes, como excelente, ya que son, parecen depender de la herramienta de Zend que ver la creación de aplicaciones y pasar por alto esto.

Una cosa que me alarmó, sin embargo, fue que usted ha mencionado que la carpeta que está tratando de incluir es público / biblioteca. A menos que quiera intencionadamente a compartir su código con el mundo, me gustaría sugerir fuertemente lo coloca en otro lugar ... a menos que tengas una carpeta diferente "público" no compartida con el público (en cuyo caso es posible que desee considerar el cambio de nombre para evitar futuras confusiones).

Añada su biblioteca personalizada a composer.json:

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

y ejecute el compositor actualización

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top