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 adodb连接不同数据库
Mar 19 PHP
Wordpress php 分页代码
Oct 21 PHP
php 修改、增加xml结点属性的实现代码
Oct 22 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
Oct 15 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
Zend Framework入门知识点小结
Mar 19 PHP
smarty自定义函数用法示例
May 20 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 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判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
Django开发中的日志输出的方法
2018/07/02 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
基于keras中的回调函数用法说明
2020/06/17 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
应届毕业生个人自荐信范文
2013/11/30 职场文书
计算机软件个人的自荐信范文
2013/12/01 职场文书
自动化专业职业生涯规划书范文
2014/01/16 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
质量月活动策划方案
2014/03/10 职场文书
优秀公益广告词大全
2014/03/19 职场文书
团队精神的演讲稿
2014/05/14 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书