Using PHP namespaces in a Zend Framework (v1) application

前端 未结 2 1323
孤独总比滥情好
孤独总比滥情好 2020-12-08 11:59

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 inst         


        
相关标签:
2条回答
  • 2020-12-08 12:17

    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!

    0 讨论(0)
  • 2020-12-08 12:34

    The standard autloader introduced in 1.12 allows you to use namespaces with minimal effort:

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

    Now you can use Application\Form\Abc instead of Application_Form_Abc & Application\Model\Xyz instead of Application_Model_Xyz etc.

    Directory/File structure examples:

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

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

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

    <?php
    namespace Application/Model;
    class Xyz {}
    
    0 讨论(0)
提交回复
热议问题