phpzend-frameworknamespacesautoloadzend-autoloader

Using PHP namespaces in a Zend Framework (v1) application


Is it possible in the current stable version of the Zend Framework (1.11), to work with application classes using PHP namespaces?

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

Starting from v1.10, ZF supports autoloading namespaces, and it's working fine when including namespaced libraries, but I was unsuccessful when trying to do the same job with application classes.


Solution

  • Actually there is a simple workaround suggested by Dmitry on the ZF issue tracker:

    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\\');
        }
    }
    

    Works like a charm for me!