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 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
Apr 29 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
Jul 03 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
Mar 06 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
php生成RSS订阅的方法
2015/02/13 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
TBCompressor js代码压缩
2011/01/05 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
原生js生成图片验证码
2020/10/11 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
Python抓取百度查询结果的方法
2015/07/08 Python
使用python实现knn算法
2017/12/20 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
点球小游戏python脚本
2018/05/22 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
html5新特性与用法大全
2018/09/13 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
匡威德国官网:Converse德国
2019/01/26 全球购物
Python使用MapReduce进行简单的销售统计
2022/04/22 Python