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启发和小结
Nov 01 PHP
PHP获取MAC地址的函数代码
Sep 11 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
微信API接口大全
Apr 15 PHP
网页的分页下标生成代码(PHP后端方法)
Feb 03 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
php 基础函数
Feb 10 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
Oct 13 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
多文件上载系统完整版
2006/10/09 PHP
PHP编码规范-php coding standard
2007/03/16 PHP
PHP memcache扩展的三种安装方法
2009/04/26 PHP
php实现插入排序
2015/03/29 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
python封装对象实现时间效果
2020/04/23 Python
Python实现的计数排序算法示例
2017/11/29 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
Django实现celery定时任务过程解析
2020/04/21 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
创建青年文明号材料
2014/05/09 职场文书
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技
Windows server 2016服务器基本设置
2022/08/14 Servers