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面向对象的方法重载两种版本比较
Sep 08 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
Nov 07 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
Dec 14 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP PDOStatement::bindValue讲解
Jan 30 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
laravel清除视图缓存的代码
Oct 23 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 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
解析strtr函数的效率问题
2013/06/26 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
python动态监控日志内容的示例
2014/02/16 Python
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
python操作oracle的完整教程分享
2018/01/30 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
德国综合购物网站:OTTO
2018/11/13 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
大学生毕业鉴定
2014/01/31 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
MongoDB使用profile分析慢查询的步骤
2021/04/30 MongoDB