zend framework 1.8 的 Zend_Application

zf这段时间升级频繁,整合\重构\添加新特性,把这段时间重新学习的心得和大家简单分享.

1.8添加了应用模块(Zend_Application), 其目的就是对引导,资源初始化进行管理.以前我们引导和初始化数据库\VIEW 等操作全部要放在 application/bootstrap.php 文件里手动进行, 现在这些操作只要写入配制文件application/configs/application.ini.  由Zend_Application处理. 强调了资源配制的灵活配制.

大家刚看见这个Zend_Application后, 我们以前的一些思想会被混觉, 其实不然, 以前的套路还是没有变.我们先回忆一下以前的引导加载到结束的整个过程.  Zend_Framework_Front 我们之前认为他是一个前端模式类,什么都以它为中心,聚合了请求类(request), 响应类(response),路由器类(router),派发器类(dispatcher),插件类(plugin)  一个由客户端发起的请求到来之后路由类按指定的规则或默认的规则分析模块名称,控制器名称,动作名称,参数值. 然后请求类进行封装. 派发器类根据请求类的参数对相应控制器进行实例, 然后调用指定的控制器的动作. 最后动作助手类调用VIEW显示HTML. 整个过程一直都是在前端控制器内进行的.另外它会根据操作不同的阶段调用己注册插件的相应方法.

现在的Zend_Application会在实例之后根据配制文件的内容. 进行以下几种类型的操作.
1.更改PHP的选项. 也就是PHP.INI内的一些选项.前辍为phpSettings
2.指定加载的资源. 前辍为resources
3.设置包含路径.  前辍为includePaths
4.设置引导类.   前辍为bootstrap
5.注册资源插件路径.前辍为pluginpaths

上面的bootstrap类就是引导类. 它是Zend_Application工作的核心,资源的加载,资源插件的注册,都是它负责的.此bootstrap为Zend_Application聚合类.上面配制文件的5种类型的设置除了更改PHP选项和设置包含路径其余全部交由BOOTSTRAP类进行处理.对于bootstrap类如果没有手动指定则Zend_Application会实例为Zend_Application_Bootstrap_Bootstrap, 此对象继承自Zend_Application_Bootstrap_BootstrapAbstract.抽象类, 也就是说我们也可以建立自己的引导对象. 如Zend_Application_Bootstrap_Bootstrap就是一个简单的定制类. 我们可以直接继承Zend_Application_Bootstrap_Bootstrap对象,  然后直接使用或者覆写run方法.
大家仔细看Zend_Application_Bootstrap_Bootstrap的run方法,其取得了资源front后进行了派发.是的, front现在被bootstrap管理. bootstrap被Zend_Application管理.


资源的原理

资源有两种加载方法
1.插件加载方法
默认的资源插件目录为Zend\Application\Resource.资源插件前辍为Zend_Application_Resource,此目录下每个插件都是一个引导资源载入并返回的类.全部都实现了Zend_Application_Resource_Resource接口,bootstrap按配制文件application.ini指定的资源名称进行加载.我们可以指定自己的插件路径和资源前辍然后就可以在配制文件里设置自己的插件资源了.资源通过Bootstrap自动调用插件进行加载后存入Container类内(其为Zend_Registery).

2.类_init()加载方法
bootstrap类里如果有自己定制的以__init为前辍的方法, 则bootstrap加载资源时会调用此方法得到其返回值然后去掉此方法_init这五个字母得到真正的资源名并存入Container类内.


这样每次调用资源就会自动到bootstrap的Container属性内去寻找.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值