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面向对象概念
Nov 06 PHP
解析php中获取系统信息的方法
Jun 25 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
PHP生成json和xml类型接口数据格式
May 17 PHP
php实现求相对时间函数
Jun 15 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
PHP命令Command模式用法实例分析
Aug 08 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 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模板的包含与渲染实例分析
2014/11/26 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
JS实现页面打印功能
2017/03/16 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
python函数装饰器用法实例详解
2015/06/04 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Django框架反向解析操作详解
2019/11/28 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
事业单位公务员的职业生涯规划
2014/01/15 职场文书
搞笑的获奖感言
2014/08/16 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
2014年质检工作总结
2014/11/26 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
js不常见操作运算符总结
2021/11/20 Javascript
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL