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 学习资料零碎东西
Dec 04 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
php中引用符号(&)的使用详解
Nov 13 PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
php 修改上传文件大小限制实例详解
Oct 23 PHP
PHP实现的统计数据功能详解
Dec 06 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
PHP截取发动短信内容的方法
Jul 04 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
php redis setnx分布式锁简单原理解析
Oct 23 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
php命令行模式代码实例详解
2021/02/26 PHP
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
JS实现简单的天数计算器完整实例
2017/04/28 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
Vuex 入门教程
2018/01/10 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
Python基于Tkinter实现的记事本实例
2015/06/17 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
实例详解Python装饰器与闭包
2019/07/29 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python scatter函数用法实例详解
2020/02/11 Python
Python使用re模块验证危险字符
2020/05/21 Python
python中关于数据类型的学习笔记
2020/07/19 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
研究生求职自荐书
2014/06/23 职场文书
入党政审材料范文
2014/12/24 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server