TPL + Json + PHP = TPL + JSPT
来源:互联网 发布:头像源码图片怎么用 编辑:程序博客网 时间:2024/04/28 00:44
这里,JSPT 是我发明的名词。它代表了 Json PHP Transformations = Json (Data) + PHP (Transformation Template)。为什么有这个词,是因为这个世界上还有一个著名的词:XSLT = XSL Transformations = XML (Data) + XSL (Transformation Template)。
我介绍 TPL 时,曾经把文本处理分为I和O。其中I是Parser,即将文本Parse为内存DOM结构,其中O是Formmatter,即将内存DOM结构转换为文本。其实还有第三个角色,就是Data。这里补充说明下:
TPL: 是I(Parser)模块。它将文本转为DOM。
Json/XML/etc: 它们的定位是,作为DOM的文本规范。我称之为Data。其实它们仍然是文本,需要Parser和Formmatter来处理它。但是它们的特殊之处在于 通常它们被看作为程序之间的交互规范,是DOM的Presentation(或者Persistence)。
PHP/XSL/etc: 是O(Formatter)模块。它们将DOM转为文本。通常O模块还有另一个名字,叫模板引擎(Template Engine)。这个世界上有太多的模板引擎。如:
-
http://www.djangoproject.com/documentation/templates/ (Python,有Erlang版: http://code.google.com/p/erlydtl/)
-
http://www.stringtemplate.org/ (Java,有Erlang版: http://code.google.com/p/sgte/)
-
http://smarty.php.net/ (PHP)
-
http://yarivsblog.com/articles/2006/10/21/erltl-0-9-1/ (Erlang)
但我个人更倾向于认为,PHP才是世上最棒的模板引擎 ── 这根本就是这个语言的定位。任何额外的封装其实是画蛇添足。
当然,对TPL而言,它并不排斥任何组合。TPL + XSLT,还是 TPL + JSPT (Json + PHP),还是其他,你来决定。
TPL + JSPT (Json + PHP)如何工作?
TPL + JSPT可将任意两种文本格式进行相互转换。假设我们要将 TextA 转为 TextB。那么实际转换的流程是:
-
TextA 由 TPL 分析,Parse为内存中的DOM。
-
内存中的DOM,由一个JsonFormmatter转为Json文本。
-
Json文本由PHP的JsonParser模块转为内存中的DOM。
-
最后,使用PHP强悍的Formmatter能力,转换为TextB格式。
前两步由TPL库提供。后两步由PHP完成。TPL与PHP的交互通过Json文本。
一个TPL + JSPT的样例:prjconv
prjconv是一个工程转换器。它可以将各种源代码的工程格式彼此进行转换。
代码参见:http://winx.googlecode.com/svn/trunk/tpl/JSPT/
- TPL + Json + PHP = TPL + JSPT
- TPL + Json + PHP = ?
- TPL
- php请求找不到tpl文件
- TPL脚本语言
- TPL dataflow
- .tpl模板
- tpl 文件
- Drupal模板变量 – page.tpl.php
- Drupal 7中 page.tpl.php 的可用变量
- drupal7 html.tpl.php 中用到的变量
- drupal7 page.tpl.php文件中可用的默认变量
- drupal7 region.tpl.php 文件 及其 所用到的变量
- drupal7 node.tpl.php文件 及其所用到的变量
- drupal7 field.tpl.php 文件及其用到的变量
- drupal7 block.tpl.php文件及其用到的变量
- Drupal 7中 page.tpl.php 的可用变量
- 关于让node.tpl.php(节点内容页面…
- NetBeans 时事通讯(刊号 # 15 - Jul 08, 2008 )
- Delphi7.0自带Indy 9基础介绍 - lee576的专栏 - CSDNBlog
- IEEE 802.15.4与ZigBee协议
- C++ Dll
- PECompact v2.90.1
- TPL + Json + PHP = TPL + JSPT
- 简述自组网络中按需路由协议和主动路由协议的主要区别
- 连错库误删100多张表
- 自组网路由协议
- 图解SQL左连接,内连接
- 7.8
- 网上播放.flv格式的二种程序
- 判断数字是否为double的正则表达式
- Struts2.0的标签库(简介)