模板运行机制概述 微碌
使用本 PPT 指南 <ul><li>右上角的按钮中,第一个按钮为使用指南(你看到的本页面);第二个为返回目录;第三个为直接退出 PPT 播放 </li></ul><ul><li>本 PPT 修改情况如下: </li></ul><ul><ul>...
模板运行机制概述  -  目录 <ul><li>前言 </li></ul><ul><li>常见模板运行机制 </li></ul><ul><li>总结 </li></ul><ul><li>参考文献 </li></ul><ul><li>Q&A </...
前言
常见模板运行机制 主内容
模板运行机制概述 – 目的 <ul><li>目的: </li></ul><ul><li>PHP 程序员同前端人员分离   </li></ul>
模板运行机制概述 – 常见机制( 1 ) <ul><li>常见机制( 1 ): </li></ul><ul><ul><li>PHP 作为原生语言模板 </li></ul></ul><ul><li>代表: </li></ul><ul><ul><l...
模板运行机制概述 – 常见机制( 1 ) <ul><li>常见机制( 1 )例子:  PHPWind 看帖 </li></ul><ul><ul><li>read.php 代码: </li></ul></ul><ul><ul><li>PrintE...
模板运行机制概述 – 常见机制( 1 ) <ul><ul><li>template/wind/read.htm </li></ul></ul><ul><ul><ul><li>都是 PHP 代码,而且以 html 结尾 </li></ul></u...
模板运行机制概述 – 常见机制( 1 ) <ul><li>常见机制( 1 )变形:函数 / 类封装 </li></ul><ul><ul><li>Discuz! 后台、 VBB 后台 </li></ul></ul>
模板运行机制概述 – 常见机制( 1 ) <ul><li>常见机制( 1 )变形:函数 / 类封装 </li></ul><ul><ul><li>Zend Framework 中 Zend_View_helper </li></ul></ul><...
模板运行机制概述 – 常见机制( 1 ) <!-- Inside your view script, $this refers to the Zend_View instance.  Say that you have already assi...
模板运行机制概述 – 常见机制( 2 ) <ul><li>常见机制( 2 ): </li></ul><ul><ul><li>Smarty 为代表的自定义模板语法机制 </li></ul></ul><ul><li>代表: </li></ul><u...
模板运行机制概述 – 常见机制( 2 ) <ul><li>常见机制( 2 )例子:  Discuz! 看帖 </li></ul><ul><ul><li>Viewthread.php </li></ul></ul><ul><ul><li>temp...
模板运行机制概述 – 常见机制( 2 ) <ul><ul><li>include/global.func.php </li></ul></ul><ul><ul><ul><li>function template($file, $template...
模板运行机制概述 – 常见机制( 2 ) <ul><ul><li>template/default/viewthread.htm </li></ul></ul><ul><ul><ul><li>{subtemplate header} </li>...
模板运行机制概述 – 常见机制( 2 ) <ul><ul><li>(接上) template/default/viewthread.htm </li></ul></ul><ul><ul><ul><li><div id=&quot;postlis...
模板运行机制概述 – 常见机制( 2 ) <ul><li>注意: </li></ul><ul><ul><li>自定义模板语法机制最终仍要编译为 PHP+HTML 文件  </li></ul></ul>
模板运行机制概述 – 衍生问题( 1 ) <ul><li>衍生问题( 1 ):模板以 html 结尾的优劣性 </li></ul><ul><ul><li>优:以 html 结尾在安全性较优 </li></ul></ul><ul><ul><ul>...
模板运行机制概述 – 衍生问题( 2 ) <ul><li>衍生问题( 2 )  :争论:前端该用何语法? </li></ul><ul><ul><li>Smarty 已不再作为 PHP 子项目运作 </li></ul></ul><ul><ul><...
总结
模板运行机制概述 – 分目录(演讲隐藏页) <ul><li>目的: PHP 程序员同前端人员分离  </li></ul><ul><li>常见机制: </li></ul><ul><ul><li>PHP 作为原生语言模板 </li></ul></u...
参考文献 <ul><ul><li>Discuz! 后台模板语法分析: </li></ul></ul><ul><ul><ul><li>http://cn.programmingnote.com/blog/?p=158 </li></ul></ul...
Q&A
感谢收听! [email_address] Template is created by:
Upcoming SlideShare
Loading in...5
×

PHP通用程序的模板运行机制

1,751

Published on

本ppt主要内容为常见PHP通用程序的模板运行机制。本PPT主要为具体的编码技术实现,主要服务于后端人员。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,751
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 从 PHP 实现技术阐述运行机制 不涉及文件组织方式,请参考组织机制
  • 相关阅读: Discuz! 后台模板语法分析: http://cn.programmingnote.com/blog/?p=158
  • Zend Framework 中 Zend_View_helper 类: http://man.gimoo.net/zf/zend.view.helpers.html
  • 貌似 Tankme 开发的 Punny 框架提出一种解决方案,不过不了解,暂时忽略
  • PHP通用程序的模板运行机制

    1. 1. 模板运行机制概述 微碌
    2. 2. 使用本 PPT 指南 <ul><li>右上角的按钮中,第一个按钮为使用指南(你看到的本页面);第二个为返回目录;第三个为直接退出 PPT 播放 </li></ul><ul><li>本 PPT 修改情况如下: </li></ul><ul><ul><li>版本 0.1 ,于 2010-08-17 由 微碌 修改。修改目的:创建文档 </li></ul></ul><ul><ul><li>版本 0.1.1 ,于 2010-08-18 由 微碌 修改。修改目的:分离文档 </li></ul></ul>返回
    3. 3. 模板运行机制概述 - 目录 <ul><li>前言 </li></ul><ul><li>常见模板运行机制 </li></ul><ul><li>总结 </li></ul><ul><li>参考文献 </li></ul><ul><li>Q&A </li></ul>
    4. 4. 前言
    5. 5. 常见模板运行机制 主内容
    6. 6. 模板运行机制概述 – 目的 <ul><li>目的: </li></ul><ul><li>PHP 程序员同前端人员分离 </li></ul>
    7. 7. 模板运行机制概述 – 常见机制( 1 ) <ul><li>常见机制( 1 ): </li></ul><ul><ul><li>PHP 作为原生语言模板 </li></ul></ul><ul><li>代表: </li></ul><ul><ul><li>PHPWind </li></ul></ul><ul><ul><li>WordPress 3 </li></ul></ul>
    8. 8. 模板运行机制概述 – 常见机制( 1 ) <ul><li>常见机制( 1 )例子: PHPWind 看帖 </li></ul><ul><ul><li>read.php 代码: </li></ul></ul><ul><ul><li>PrintEot 函数说明: </li></ul></ul><ul><ul><ul><li>获取模板文件路径,并返回 </li></ul></ul></ul><ul><ul><ul><li>require_once PrintEot('read'); </li></ul></ul></ul>
    9. 9. 模板运行机制概述 – 常见机制( 1 ) <ul><ul><li>template/wind/read.htm </li></ul></ul><ul><ul><ul><li>都是 PHP 代码,而且以 html 结尾 </li></ul></ul></ul><ul><ul><ul><li>因此无必要编译和作访问安全性禁止 </li></ul></ul></ul><ul><ul><ul><li><!--<?php </li></ul></ul></ul><ul><ul><ul><li>print <<<EOT </li></ul></ul></ul><ul><ul><ul><li>--> </li></ul></ul></ul><ul><ul><ul><li><!--ads begin--> </li></ul></ul></ul><ul><ul><ul><li><!-- </li></ul></ul></ul><ul><ul><ul><li>EOT; </li></ul></ul></ul><ul><ul><ul><li>list($htmlAdvert,$arrayAdvert) = pwAdvert('Mode.Forum.TextRead',$fid); </li></ul></ul></ul><ul><ul><ul><li>if($htmlAdvert){print <<<EOT </li></ul></ul></ul><ul><ul><ul><li>--> </li></ul></ul></ul><ul><ul><ul><li><div class=&quot;ad-text&quot;> </li></ul></ul></ul><ul><ul><ul><li><table width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;> </li></ul></ul></ul><ul><ul><ul><li><!-- </li></ul></ul></ul><ul><ul><ul><li>EOT; </li></ul></ul></ul>
    10. 10. 模板运行机制概述 – 常见机制( 1 ) <ul><li>常见机制( 1 )变形:函数 / 类封装 </li></ul><ul><ul><li>Discuz! 后台、 VBB 后台 </li></ul></ul>
    11. 11. 模板运行机制概述 – 常见机制( 1 ) <ul><li>常见机制( 1 )变形:函数 / 类封装 </li></ul><ul><ul><li>Zend Framework 中 Zend_View_helper </li></ul></ul><ul><ul><ul><li>Zend_View 加载 Zend_View_Helper_HelperName 类,建立一个对象实例,并调用它的 helperName() 方法。 </li></ul></ul></ul><ul><ul><ul><li>对象的实例会在 Zend_View 的实例内一直存在,并可以被 $this->helperName() 重复调用。 </li></ul></ul></ul>
    12. 12. 模板运行机制概述 – 常见机制( 1 ) <!-- Inside your view script, $this refers to the Zend_View instance. Say that you have already assigned a series of select options under the name $countries as array('us' => 'United States', 'il' => 'Israel', 'de' => 'Germany'). --> <form action=&quot;action.php&quot; method=&quot;post&quot;>     <p><label>Your Country:         <?php echo $this->formSelect('country', 'us', null, $this->countries) ?>     </label></p> </form>          <select name=&quot;country&quot;>             <option value=&quot;us&quot; selected=&quot;selected&quot;>United States</option>             <option value=&quot;il&quot;>Israel</option>             <option value=&quot;de&quot;>Germany</option>         </select>
    13. 13. 模板运行机制概述 – 常见机制( 2 ) <ul><li>常见机制( 2 ): </li></ul><ul><ul><li>Smarty 为代表的自定义模板语法机制 </li></ul></ul><ul><li>代表: </li></ul><ul><ul><li>Smarty </li></ul></ul><ul><ul><li>Discuz! 前台、 VBB 前台 </li></ul></ul><ul><ul><li>ThinkPHP 框架内置的 TagLib 模板语法 </li></ul></ul>
    14. 14. 模板运行机制概述 – 常见机制( 2 ) <ul><li>常见机制( 2 )例子: Discuz! 看帖 </li></ul><ul><ul><li>Viewthread.php </li></ul></ul><ul><ul><li>template 函数作用: </li></ul></ul><ul><ul><ul><li>检查并编译模板,返回编译好的文件路径 </li></ul></ul></ul><ul><ul><li>template/default/viewthread.htm </li></ul></ul><ul><ul><ul><li>简化版的类 Smarty 模板语法,以 html 结尾 </li></ul></ul></ul><ul><ul><ul><li>编译时根据已有模板语法定义进行正则替换 </li></ul></ul></ul><ul><ul><ul><li>include template('viewthread'); </li></ul></ul></ul>
    15. 15. 模板运行机制概述 – 常见机制( 2 ) <ul><ul><li>include/global.func.php </li></ul></ul><ul><ul><ul><li>function template($file, $templateid = 0, $tpldir = '') { </li></ul></ul></ul><ul><ul><ul><li>…… </li></ul></ul></ul><ul><ul><ul><li>@checktplrefresh($tplfile, $tplfile, filemtime($objfile), $templateid, $tpldir); </li></ul></ul></ul><ul><ul><ul><li>return $objfile; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
    16. 16. 模板运行机制概述 – 常见机制( 2 ) <ul><ul><li>template/default/viewthread.htm </li></ul></ul><ul><ul><ul><li>{subtemplate header} </li></ul></ul></ul><ul><ul><ul><li><div id=&quot;nav&quot;> </li></ul></ul></ul><ul><ul><ul><li><!--{if $forumjump == 1}--> </li></ul></ul></ul><ul><ul><ul><li><a href=&quot;$indexname&quot; id=&quot;fjump&quot; onmouseover=&quot;showMenu(this.id)&quot; class=&quot;dropmenu&quot;>$bbname</a> </li></ul></ul></ul><ul><ul><ul><li><!--{else}--> </li></ul></ul></ul><ul><ul><ul><li><a href=&quot;$indexname&quot;>$bbname</a> </li></ul></ul></ul><ul><ul><ul><li><!--{/if}--> </li></ul></ul></ul><ul><ul><ul><li></div> </li></ul></ul></ul><ul><ul><ul><li>...... </li></ul></ul></ul>
    17. 17. 模板运行机制概述 – 常见机制( 2 ) <ul><ul><li>(接上) template/default/viewthread.htm </li></ul></ul><ul><ul><ul><li><div id=&quot;postlist&quot; class=&quot;mainbox viewthread&quot;> </li></ul></ul></ul><ul><ul><ul><li>{eval $postcount = 0;} </li></ul></ul></ul><ul><ul><ul><li><!--{loop $postlist $post}--> </li></ul></ul></ul><ul><ul><ul><li><div id=&quot;post_$post[pid]&quot;> </li></ul></ul></ul><ul><ul><ul><li>{subtemplate viewthread_node} </li></ul></ul></ul><ul><ul><ul><li></div> </li></ul></ul></ul><ul><ul><ul><li><!--{/loop}--> </li></ul></ul></ul><ul><ul><ul><li></div> </li></ul></ul></ul><ul><ul><ul><li>...... </li></ul></ul></ul><ul><ul><ul><li>{subtemplate footer} </li></ul></ul></ul>
    18. 18. 模板运行机制概述 – 常见机制( 2 ) <ul><li>注意: </li></ul><ul><ul><li>自定义模板语法机制最终仍要编译为 PHP+HTML 文件 </li></ul></ul>
    19. 19. 模板运行机制概述 – 衍生问题( 1 ) <ul><li>衍生问题( 1 ):模板以 html 结尾的优劣性 </li></ul><ul><ul><li>优:以 html 结尾在安全性较优 </li></ul></ul><ul><ul><ul><li>WP 模板存在暴露服务器路径的鸡肋“漏洞” </li></ul></ul></ul><ul><ul><li>劣:可批量偷盗模板 </li></ul></ul>
    20. 20. 模板运行机制概述 – 衍生问题( 2 ) <ul><li>衍生问题( 2 ) :争论:前端该用何语法? </li></ul><ul><ul><li>Smarty 已不再作为 PHP 子项目运作 </li></ul></ul><ul><ul><li>极端点说:前端懂不懂 PHP ? </li></ul></ul>
    21. 21. 总结
    22. 22. 模板运行机制概述 – 分目录(演讲隐藏页) <ul><li>目的: PHP 程序员同前端人员分离 </li></ul><ul><li>常见机制: </li></ul><ul><ul><li>PHP 作为原生语言模板 </li></ul></ul><ul><ul><ul><li>代表: </li></ul></ul></ul><ul><ul><ul><ul><li>PHPWind </li></ul></ul></ul></ul><ul><ul><ul><ul><li>WordPress 3 </li></ul></ul></ul></ul><ul><ul><ul><li>变形:函数 / 类封装 </li></ul></ul></ul><ul><ul><ul><ul><li>Discuz! 后台、 VBB 后台 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Zend Framework 中 Zend_View_helper 类 </li></ul></ul></ul></ul><ul><ul><li>Smarty 为代表的自定义模板语法机制 </li></ul></ul><ul><ul><ul><li>代表: </li></ul></ul></ul><ul><ul><ul><ul><li>Smarty </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Discuz! 前台、 VBB 前台 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>ThinkPHP 框架内置的 TagLib 模板语法 </li></ul></ul></ul></ul><ul><ul><ul><li>注意:最终仍要编译为 PHP+HTML 文件 </li></ul></ul></ul><ul><li>衍生问题( 1 ):模板以 html 结尾的优劣性 </li></ul><ul><li>衍生问题( 2 ):争论:前端该用何语法? </li></ul><ul><ul><li>Smarty 已不再作为 PHP 子项目运作 </li></ul></ul><ul><ul><li>极端点说:前端懂不懂 PHP ? </li></ul></ul>
    23. 23. 参考文献 <ul><ul><li>Discuz! 后台模板语法分析: </li></ul></ul><ul><ul><ul><li>http://cn.programmingnote.com/blog/?p=158 </li></ul></ul></ul><ul><ul><li>Zend Framework 中 Zend_View_helper 类( Zend Framework 框架手册): </li></ul></ul><ul><ul><ul><li>http://man.gimoo.net/zf/zend.view.helpers.html </li></ul></ul></ul>
    24. 24. Q&A
    25. 25. 感谢收听! [email_address] Template is created by:
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×