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 相关文章推荐
用 PHP5 轻松解析 XML
Dec 04 PHP
PHP 文件扩展名 获取函数
Jun 03 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
Jul 01 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
php 可变函数使用小结
Jun 12 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 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
php 三维饼图的实现代码
2008/09/28 PHP
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
php时间计算相关问题小结
2016/05/09 PHP
IE bug table元素的innerHTML
2010/01/11 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
javascript编写简易计算器
2017/05/06 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
使用python加密自己的密码
2015/08/04 Python
Python下rrdtool模块的基本使用方法
2015/11/13 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
django和vue实现数据交互的方法
2019/08/21 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
为什么python比较流行
2020/06/19 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
介绍一下linux的文件系统
2015/10/06 面试题
入党申请书自我鉴定
2013/10/12 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
个人四风对照检查材料
2014/09/26 职场文书
学生保证书
2015/01/16 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
离婚案件原告代理词
2015/05/23 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers