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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
PHP调用三种数据库的方法(1)
Oct 09 PHP
PHP控制网页过期时间的代码
Sep 28 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
ThinkPHP缓存方法S()概述
Jun 13 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
php判断当前操作系统类型
Oct 28 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
PHP从尾到头打印链表实例讲解
Sep 27 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 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
zf框架db类的分页示例分享
2014/03/14 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
浅谈Python中的继承
2020/06/19 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
文秘专业自荐信
2013/10/14 职场文书
仓库管理专业个人自我评价范文
2013/11/11 职场文书
毕业生自荐信
2013/12/14 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
团支部推优材料
2014/05/21 职场文书
找工作求职信
2014/07/07 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
2014年采购部工作总结
2014/11/20 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
主持稿开场白
2015/06/01 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
Python创建SQL数据库流程逐步讲解
2022/09/23 Python