PHP.MVC的模板标签系统(二)


Posted in PHP onSeptember 05, 2006

The Php.MVC Tag Action Dispatcher

    TagActionDispatcher是一个标准的ActionDispatcher类的实现,它支持访问基本模板标签.TagActionDispatcher类支持相同的ActionObjects集合和ViewResourcesConfig属性作为默认的ActionDispatcher.TagActionDispatcher类能被用在带有或没有带有模板标签系统上,尽管由于它的额外处理会造成小的性能下降.
    模板标签库是PHP.MVC框架结构的子系统.模板标签库联合TagActionDispatcher一起工作来支持一些简单的模板标签.
    下面的图表显示了PHP.MVC模板标签系统的总揽.左边展示的是模板标签系统的程序流程.右边是TagActionDispatcher的程序流程,还有标签模板是怎样使这些类进行交互.

PHP.MVC的模板标签系统(二)   

1.初始化
    当控制器传递控制到达TagActionDispatcher,一些初始化触发去设置ActionObjects和ViewResourcesConfig属性为了使用我们的模板:
    从request中重新获得$form,$errors和$data对象,如果这些对象中的任意一个已经在之前被创建(比如在Action类中),那么对象现在将在资源模板中不可见,否则对象将被设置为NULL.
    重新获得ViewResourcesConfig对象的参考,它包含了配置参数.
    设置在ViewResourcesConfig参数中指向模板源文件和编译的模板文件的路径.
2.设置标签页面
    模板源文件的扩展名(可能是".ssp")被用来和ViewResourcesConfig->tagFlagStr参数相比较来决定是否这个页面需要处理,否则页面将被处理为标准(无标签)模板文件.我们能在view-resources元素中配置标签文件扩展名,就像这样:
    <view-resources
 ...
 tagFlagStr = ".ssp"
 tagFlagCnt = "-4"
 ...
    </view-resources>
    tagFlagStr指示了标签模板源文件能被预处理,比如:myPage.ssp.这个扩展名触发标签处理.属性tagFlagCnt定义了文件名结尾的字符数,包括"."(xxxYyy.ssp).据个例子,-4代表源文件名最后4个字符.默认值是.ssp和-4,因此如果我们使用一个模板文件名像myPage.ssp,我们不需要设置这些参数.
3.处理标签文件
    模板标签系统决定是否运行标签处理器,要根据ViewResourcesConfig->processTags属性.如果这个属性为真,模板页(及它所包含的页)将被标签处理器类所处理,否则标签处理器不会被调用.开发者只要将它在开发中将其设置为真即可,假则不处理.但要注意的是当processTags属性设置为真,修改过的标签页才会被编译(这依赖于compileAll属性设置).我们能定义processTags属性在view-resources元素,就像这样:
    <view-resources
 ...
 processTags = "True"
 ...
    </view-resources>
    注意,它的默认值是假.
4.编译模板页.
    如果TagActionDispatcher决定模板页将被处理,那么它会传递控制给模板标签系统.现在模板标签系统将决定是否只编译修改过的页,还是编译所有页.这种行为使用ViewResourcesConfig->compileAll属性来定义.我们定义compileAll属性就像这样:
    <view-resources
 ...
 compileAll = "True"
 ...
    </view-resources>
    这个属性默认为假.
5.只编译修改的页.
    如果compileAll属性设置为假(默认值),那么只会编译修改过的页.据个例子,如果被请求的页面自从上次被请求以来被修改过,此页将会被编译.
6.编译所有的页.
    如果compileAll属性设置为真,模板标签系统将总是编译页面(包括包含的页面)无论此页面自从上次请求以来是否修改过.开发者使用在开发中使用这个选项能够保证所有的页面都被处理.
7.处理VIEW资源.
    在处理完模板页之后,控制权回到TagActionDispatcher.被请求的VIEW资源(模板文件)将被任何其他的正规PHP.MVC模板文件所处理.TagActionDispatcher重新获得被编译的页(包括包含的页面)并且将页面输出给用户的浏览器.如果模板标签系统没有被调用,TagActionDispatcher将被请求的页面作为正规的VIEW资源来处理.比如TagActionDispatcher能被用来代替标准的ActionDispatcher.

PHP 相关文章推荐
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 PHP
php ci框架验证码实例分析
Jun 26 PHP
解析php开发中的中文编码问题
Aug 08 PHP
php根据身份证号码计算年龄的实例代码
Jan 18 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
php中array_column函数简单实现方法
Jul 11 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 PHP
PHP7.3.10编译安装教程
Oct 08 PHP
Yii框架数据库查询、增加、删除操作示例
Oct 14 PHP
PHP.MVC的模板标签系统(一)
Sep 05 #PHP
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 #PHP
Windows下PHP5和Apache的安装与配置
Sep 05 #PHP
玩转图像函数库―常见图形操作
Sep 03 #PHP
生成静态页面的PHP类
Jul 15 #PHP
删除无限级目录与文件代码共享
Jul 12 #PHP
PHP截取中文字符串的问题
Jul 12 #PHP
You might like
在线竞拍系统的PHP实现框架(二)
2006/10/09 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
一些不错的js函数ajax
2008/08/20 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
Python上传package到Pypi(代码简单)
2016/02/06 Python
Python内存读写操作示例
2018/07/18 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
python七夕浪漫表白源码
2019/04/05 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
python实现视频压缩功能
2020/12/18 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
科室工作的个人自我评价
2013/10/30 职场文书
英语简历自我评价
2014/01/26 职场文书
采购求职信
2014/03/17 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
九年级历史教学反思
2016/02/19 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书