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 相关文章推荐
优化使用mysql存储session的php代码
Jan 10 PHP
php str_replace的替换漏洞
Mar 15 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php获取汉字首字母的函数
Nov 07 PHP
php绘制一条弧线的方法
Jan 24 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 PHP
浅谈PHP array_search 和 in_array 函数效率问题
Oct 15 PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP使用QR Code生成二维码实例
Jul 07 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
解析htaccess伪静态的规则
2013/06/18 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
php中Ioc(控制反转)和Di(依赖注入)
2017/05/07 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
python实现清屏的方法
2015/04/30 Python
Python实现线程池代码分享
2015/06/21 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
Python对切片命名的实现方法
2018/10/16 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
教研活动总结
2014/04/28 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android