Zend Framework中Resource Autoloading用法。具体如下:
通常,在开发应用程序中,可能类文件名不能按照标准Zend Framework的建议定义的,这意味着你的类文件不能被自动加载器发现。Zend_Loader_Autoloader_Resource提供了解决方案。
资源仅仅是一个名称对应一个组件的命名空间(追加到自动加载器的命名空间)和路径(相对的自动加载器的基本路径),例如可以这样:
| 1 2 3 4 | $loader= newZend_Application_Module_Autoloader(array(  'namespace'=> 'Blog',  'basePath'=> APPLICATION_PATH . '/modules/blog',)); | 
具体实例如下:
path/to/some/resources/
|– forms/
|   `– Guestbook.php        // Foo_Form_Guestbook
|– models/
|   |– DbTable/
|   |   `– Guestbook.php    // Foo_Model_DbTable_Guestbook
|   |– Guestbook.php        // Foo_Model_Guestbook
|   `– GuestbookMapper.php  // Foo_Model_GuestbookMapper
创建资源装载器:
| 1 2 3 4 | $loader= newZend_Loader_Autoloader_Resource(array(  'basePath'=> 'path/to/some/resources/',  'namespace'=> 'Foo',)); | 
定义资源类型
Zend_Loader_Autoloader_Resourse::addResourceType()有三个参数:资源名称,指定的资源路径的相对资源路径名, 资源类型组件前缀。
在上面的树,我们有三种资源类型:form(在子目录forms中,资源前缀是Form),model(在子目录models中,资源前缀是Model),并dbtable(在子目录“models/DbTable”中,资源前缀是“Model_DbTable”)。
具体定义如下:
| 1 2 3 | $loader->addResourceType('form', 'forms', 'Form')    ->addResourceType('model', 'models', 'Model')    ->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable'); | 
也可以在构造函数中指定
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $resourceLoader= newZend_Loader_Autoloader_Resource(array(  'basePath'=> 'path/to/some/directory',  'namespace'=> 'My',  'resourceTypes'=> array(    'acl'=> array(      'path'=> 'acls/',      'namespace'=> 'Acl',    ),    'form'=> array(      'path'=> 'forms/',      'namespace'=> 'Form',    ),    'model'=> array(      'path'=> 'models/',      'namespace'=> 'Model',    ),  ),)); | 
使用以定义资源
| 1 2 | $form= newFoo_Form_Guestbook();$guestbook= newFoo_Model_Guestbook(); | 
模块中的资源自动加载
Zend Framework的MVC鼓励使用“modules”,模块默认情况下,通常有一些资源类型,Zend Framework提供了一个模块的标准目录布局。在这种范式中,资源自动加载器非常有用,他们是默认启用的。
模块的基本目录结构:
<modulename>
configs/
application.ini
controllers/
helpers/
forms/
layouts/
filters/
helpers/
scripts/
models/
services/
views/
filters/
helpers/
scripts/
Bootstrap.php
你可以扩展Zend_Application_Module_Bootstrap创建一个模块引导类 Bootstrap.php,具体的资源加载和默认的资源加载使用类似。
联系信息:邮箱aoxolcom@163.com或见网站底部。




















请登录后发表评论
注册
社交帐号登录