Zend Framework教程之资源(Resources)用法实例详解


Posted in PHP onMarch 14, 2016

本文实例讲述了Zend Framework教程之资源(Resources)用法。分享给大家供大家参考,具体如下:

Zend_Application_Resource_Resource

Zend_Application_Bootstrap_ResourceBootstrapper是引导类加载注册资源插件使用的接口。
Zend_Application_Resource_Resource是一个资源插件接口。
Zend_Application_Resource_Resource通常被用于实现了Zend_Application_Bootstrap_ResourceBootstrapper的引导类中。

资源插件是一个可配置,预加载的和可以通过策略模式初始化资源的接口。

Zend_Application_Resource_Resource Interface

Method Return Value Parameters Description
__construct($options = null) Void $options:可选. 配置资源.  
setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) Zend_Application_Resource_Resource $bootstrap:必填. 初始化资源的父引导类  
getBootstrap() Zend_Application_Bootstrap_Bootstrapper N/A
setOptions(array $options) Zend_Application_Resource_Resource $options:必填. 配置选项.  
getOptions() Array N/A  
init() Mixed N/A 采用策略模式: 运行,初始化资源.

Zend_Application_Resource_ResourceAbstract

Zend_Application_Resource_ResourceAbstract是一个抽象类,实现了Zend_Application_Resource_Resource接口,为创建自定义插件资源提供了一个便捷的方式。

注:这个抽象类没有实现init()方法,可以继承使用这个抽象类,自定义实现init方法。

Zend_Application_Resource_ResourceAbstract Methods

Method Return Value Parameters Description
__construct($options = null) Void $options:可选. 配置资源  
setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) Zend_Application_Resource_ResourceAbstract $bootstrap:必填.    
getBootstrap() Zend_Application_Bootstrap_Bootstrapper N/A  
setOptions(array $options) Zend_Application_Resource_ResourceAbstract $options:必填.    
getOptions() Array N/A  

资源名称

注册插件资源时,出现的一个问题是你应该如何从父引导类。有三种不同的机制,可以使用,这取决于你是如何配置的引导和它的插件资源。

首先,如果你的插件名称定义包含前缀路径,您可以通过他们的“短名称” - 即类的名称的一部分。例如,类“Zend_Application_Resource_View”的短名称是“View”,如果前缀路径“Zend_Application_Resource”已注册。您可能使用类的全名或短名称注册他们:

$app = new Zend_Application(APPLICATION_ENV, array(
  'pluginPaths' => array(
    'My_Resource' => 'My/Resource/',
  ),
  'resources' => array(
    // if the following class exists:
    'My_Resource_View' => array(),
    // then this is equivalent:
    'View' => array(),
  ),
));

以后可以使用短名称引导资源和获取:

$bootstrap->bootstrap('view');
$view = $bootstrap->getResource('view');

其次,如果没有匹配的插件路径的定义,你可能仍然通过使用资源类的全名。在这种情况下,你可以参考如下使用资源的完整类名:

$app = new Zend_Application(APPLICATION_ENV, array(
  'resources' => array(
    // This will load the standard 'View' resource:
    'View' => array(),
    // While this loads a resource with a specific class name:
    'My_Resource_View' => array(),
  ),
));

引导资源以及获取方式

$bootstrap->bootstrap('My_Resource_View');
$view = $bootstrap->getResource('My_Resource_View');

这给我们带来了第三个选项。您可以指定一个明确的名称,将自己注册为一个给定的资源类。这可以通过资源插件类增加 public $_explicitType的字符串值,该值将被用来指定引导插件资源。作为一个例子,让我们来定义我们自己的视图类:

class My_Resource_View extends Zend_Application_Resource_ResourceAbstract
{
  public $_explicitType = 'My_View';
  public function init()
  {
    // do some initialization...
  }
}

然后,我们可以引导资源或通过它的名字“My_View”获取:

$bootstrap->bootstrap('My_View');
$view = $bootstrap->getResource('My_View');

可以使用这些不同的命名方法,覆盖现有资源,添加您自己的,混合是i用多种资源,以实现复杂的初始化等等。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP的explode和implode的使用说明
Jul 17 PHP
php实现文件下载更能介绍
Nov 23 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
非常重要的php正则表达式详解
Jan 04 PHP
PHP错误机制知识汇总
Mar 24 PHP
php数据访问之查询关键字
May 09 PHP
round robin权重轮循算法php实现代码
May 28 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
Aug 04 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
PHP访问数据库集群的方法小结
Mar 14 #PHP
php 无限级分类 获取顶级分类ID
Mar 13 #PHP
PHP实现文件上传与下载实例与总结
Mar 13 #PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 #PHP
PHP批量去除BOM头内容信息代码
Mar 11 #PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 #PHP
php实现无限级分类查询(递归、非递归)
Mar 10 #PHP
You might like
PHP出错界面
2006/10/09 PHP
php 获取本机外网/公网IP的代码
2010/05/09 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
使用Apache的rewrite
2021/03/09 Servers
动态控制Table的js代码
2007/03/07 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
简单的通用表达式求10乘阶示例
2014/03/03 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
大学生活动总结模板
2014/07/02 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
开展警示教育活动总结
2015/05/09 职场文书
组织委员竞选稿
2015/11/21 职场文书