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 相关文章推荐
2014年10个最佳的PHP图像操作库
Jul 14 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
php清除和销毁session的方法分析
Mar 19 PHP
php获取twitter最新消息的方法
Apr 14 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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
计数器详细设计
2006/10/09 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
php文件读取方法实例分析
2015/06/20 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
PHP重载基础知识回顾
2020/09/10 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
python 系统调用的实例详解
2017/07/11 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Django时区详解
2019/07/24 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
python excel和yaml文件的读取封装
2021/01/12 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
优秀语文教师事迹
2014/05/18 职场文书
培训研修方案
2014/06/06 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
委托书怎么写
2014/07/31 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB