Zend Framework教程之Resource Autoloading用法实例


Posted in PHP onMarch 08, 2016

本文实例讲述了Zend Framework中Resource Autoloading用法。分享给大家供大家参考,具体如下:

通常,在开发应用程序中,可能类文件名不能按照标准Zend Framework的建议定义的,这意味着你的类文件不能被自动加载器发现。Zend_Loader_Autoloader_Resource提供了解决方案。

资源仅仅是一个名称对应一个组件的命名空间(追加到自动加载器的命名空间)和路径(相对的自动加载器的基本路径),例如可以这样:

$loader = new Zend_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

创建资源装载器:

$loader = new Zend_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”)。

具体定义如下:

$loader->addResourceType('form', 'forms', 'Form')
    ->addResourceType('model', 'models', 'Model')
    ->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');

也可以在构造函数中指定

$resourceLoader = new Zend_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',
    ),
  ),
));

使用以定义资源

$form   = new Foo_Form_Guestbook();
$guestbook = new Foo_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,具体的资源加载和默认的资源加载使用类似。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php中数据的批量导入(csv文件)
Oct 09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
php正则表达式使用的详细介绍
Apr 27 PHP
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
纯php生成随机密码
Oct 30 PHP
php实现的xml操作类
Jan 15 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
php bootstrap实现简单登录
Mar 08 #PHP
PHP Echo字符串的连接格式
Mar 07 #PHP
Zend Framework教程之MVC框架的Controller用法分析
Mar 07 #PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 #PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 #PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
Mar 07 #PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 #PHP
You might like
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
Python3分析处理声音数据的例子
2019/08/27 Python
简单的Python调度器Schedule详解
2019/08/30 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
大学毕业自我鉴定范文
2014/02/03 职场文书
小学生手册家长评语
2014/04/16 职场文书
幼儿教师求职信
2014/05/24 职场文书
跳槽求职信范文
2014/05/26 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
公司档案管理制度
2015/08/05 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python