Utilizzo degli spazi dei nomi PHP in un'applicazione Zend Framework (v1)

Nell'attuale versione stabile di Zend Framework (1.11) è ansible lavorare con classi di applicazioni che utilizzano spazi dei nomi PHP?

Application\Form\Abc instead of Application_Form_Abc Application\Model\Xyz instead of Application_Model_Xyz etc. 

A partire dalla v1.10, ZF support il caricamento automatico degli spazi dei nomi e funziona bene quando include le librerie dei nomi, ma non ho avuto successo quando ho provato a fare lo stesso lavoro con le classi dell'applicazione.

In realtà c'è una soluzione semplice suggerita da Dmitry sul tracker dei problemi di ZF :

 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initAutoloader() { $loader = function($className) { $className = str_replace('\\', '_', $className); Zend_Loader_Autoloader::autoload($className); }; $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader->pushAutoloader($loader, 'Application\\'); } } 

Funziona come un fascino per me!

Lo standard autloader introdotto in 1.12 consente di utilizzare gli spazi dei nomi con il minimo sforzo:

 require 'Zend/Loader/AutoloaderFactory.php'; Zend_Loader_AutoloaderFactory::factory([ 'Zend_Loader_StandardAutoloader' => [ 'autoregister_zf' => true, 'namespaces' => [ 'Application' => '/path/to/Application/src', ] ] ]); 

Ora puoi usare Application\Form\Abc invece di Application_Form_Abc e Application\Model\Xyz invece di Application_Model_Xyz ecc.

Esempi di struttura di directory / file:

path / to / Application / src / Form / Abc.php

 <?php namespace Application/Form; class Abc {} 

path / to / Application / src / Modello / Xyz.php

 <?php namespace Application/Model; class Xyz {}