如何使用Zend_Loader_Autoloader

时间:2012-05-05 10:41:16

标签: zend-framework

我认为这是一个相当简单的问题,但我只是没有在Zend框架中进行自动加载。

基本上,我有标准的Zend项目布局,包括应用程序/模型,应用程序/控制器,应用程序/视图目录。我还添加了一个application / forms目录,它包含的类名为Application_Form _ *

如何使用自动加载器注册新目录?

...谢谢

2 个答案:

答案 0 :(得分:1)

您无需使用自动加载器注册新目录。如果您创建表单,它应该如下所示: -

应用/表格/ Myform.php

class Application_Form_Myform extends Zend_Form
{
    public function init()
    {
        //Put your code here
    }
}

然后您可以像这样实例化您的表单(例如在您的控制器中): -

$myform = new Application_Form_Myform();
然后,Zend Framework将为您自动加载该类。

http://framework.zend.com/manual/en/learning.quickstart.create-form.html

手册中有Autoloading in Zend Framework的解释。

摘录自: -

  

Zend Framework从»PEAR借用了一个想法,其中类名与文件系统有1:1的关系。简单地说,下划线字符(“_”)被目录分隔符替换,以便解析文件的路径,然后添加后缀“.php”。例如,类“Foo_Bar_Baz”将对应于文件系统上的“Foo / Bar / Baz.php”。假设这些类可以通过PHP的include_path设置来解析,它允许include()和require()通过include_path上的相对路径查找来查找文件名。

这基本上意味着文件夹并不都需要在自动装带器中注册。只要您遵循命名约定和正确的大小写,它就可以很高兴地在应用程序或库/ Zend文件夹下的任何位置找到文件夹。

应用程序/以's'结尾的默认文件夹是Zend_Application_Module_Autoloader::initDefaultResourceTypes()专门处理的特殊情况,不应与主自动加载机制混淆。

答案 1 :(得分:0)

使用$resourceLoader

$resourceLoader->addResourceTypes(array(
    'acl' => array(
        'path'      => 'acls/',
        'namespace' => 'Acl',
    ),
    'form' => array(
        'path'      => 'forms/',
        'namespace' => 'Form',
    ),
    'model' => array(
        'path'      => 'models/',
        'namespace' => 'Model',
    ),
));

请参阅:http://framework.zend.com/manual/en/zend.loader.autoloader-resource.html