【问题标题】:How can I drop the "Application_Model_" prefix from Zend Framework model class names?如何从 Zend Framework 模型类名称中删除“Application_Model_”前缀?
【发布时间】:2023-03-29 15:49:01
【问题描述】:

我有一个新的 ZF 1.10 项目(只是默认模块 - 不是多个模块),我必须在模型的类名前加上“Application_Model_”前缀,以便从 application/models 目录中提取它们。

我怎样才能更好地控制它?例如,我希望自己命名模型类 - 例如作为“Blah_ClassName”或者甚至只是“ClassName”。

(我知道我可以使用 set_include_path() 来实现后者,但这不是很“类似于 Zend”。我认为需要对自动加载器进行某种更改 - 但最好的方法是什么?)

【问题讨论】:

    标签: zend-framework


    【解决方案1】:

    您正在寻找Resource Autoloaders

    在您的引导程序中:

    protected function _initResourceLoader()
    {
        $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
            'namespace' => '',
            'basePath'  => APPLICATION_PATH,
        ));
        $resourceLoader->addResourceType('model', 'models/', 'Model');
        $resourceLoader->addResourceType('form', 'forms/', 'Form');
        $resourceLoader->addResourceType('service', 'services/', 'Service');
    
        return $resourceLoader;
    }
    

    加载资源:

    $form    = new Form_Article    // loads from APPLICATION_PATH . /forms/Article.php
    $model   = new Model_Article   // loads from APPLICATION_PATH . /models/Article.php
    $service = new Service_Article // loads from APPLICATION_PATH . /services/Article.php
    

    【讨论】:

      【解决方案2】:

      要让自动加载器工作,您需要做两件事,将路径添加到您的 include_path 并指定自动加载器命名空间:

      Autoloadernamespaces[] = "YourNamespace_"
      

      【讨论】:

        猜你喜欢
        • 2021-10-04
        • 2021-11-23
        • 2023-03-13
        • 1970-01-01
        • 2018-04-08
        • 2011-05-04
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多