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代码 用PHP写出自己的BLOG系统
Apr 12 PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
php遍历树的常用方法汇总
Jun 18 PHP
php类的定义与继承用法实例
Jul 07 PHP
thinkPHP中多维数组的遍历方法
Jan 09 PHP
php cookie工作原理与实例详解
Jul 18 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
laravel清除视图缓存的代码
Oct 23 PHP
php文件上传原理与实现方法详解
Dec 20 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
python基于queue和threading实现多线程下载实例
2014/10/08 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python logging.info在终端没输出的解决
2020/05/12 Python
斯福泰克软件测试面试题
2015/02/16 面试题
室内设计专业个人的自我评价
2013/12/18 职场文书
给女朋友的道歉信
2014/01/10 职场文书
小学科学教学反思
2014/01/26 职场文书
环保倡议书格式范文
2014/05/14 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL