`
javatoyou
  • 浏览: 1078499 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

TPL + Json + PHP = ?

阅读更多

TPL + Json + PHP = TPL + JSPT

这里,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)。这个世界上有太多的模板引擎。如:

但我个人更倾向于认为,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/

<!-- google_ad_section_end --> <!-- google_ad_section_start(weight=ignore) -->
分享到:
评论

相关推荐

    【RBAC权限管理】基于php+tp5.0采用php反射处理RBAC权限管理.zip

    基于php+tp5.0采用php反射处理RBAC权限管理.zip 始的目录结构如下: www WEB部署目录(或者子目录) ├─application 应用目录 │ ├─common 公共模块目录(可以更改) │ ├─admin 后台模块 │ │ ├─config....

    调用豆瓣API抓取图书信息的php文件

    5. **解析JSON数据**:收到响应后,我们需要使用json_decode函数将其转换为PHP数组,然后就可以方便地访问书籍的各个属性。例如: ```php $data = json_decode($response, true); $title = $data['title']; $...

    [php]smarty实例及ajax的应用

    $smarty-&gt;display('index.tpl'); ``` 接下来,我们关注AJAX部分,这里主要使用jQuery库来实现无刷新的数据交换: 1. **jQuery库**:`jquery.js`是一个轻量级的JavaScript库,简化了DOM操作、事件处理和Ajax交互...

    基于PHP的多进程定时任务框架设计源码

    taskPHP是一个基于PHP的多进程定时任务框架,采用多...项目包含39个文件,其中30个PHP源文件、6个Markdown文档、1个JSON配置文件、1个CMD脚本文件、1个TPL模板文件,为开发者提供了一个灵活且强大的任务调度解决方案。

    前端 后端 Fis3+Es6+Smarty+Tmpl

    graduation 毕业设计代码,还没完成!但可以跑哦~ Fis3+Es6+Smarty+Tmpl 项目实战 阅读以下部分假定你已经了解: 构建工具 Fis3 基于Smarty的解决方案 Fis-Smarty ... └── config # config/*.json 发布位置

    基于PHP的医疗记录编辑器API设计源码

    本项目是基于PHP开发的医疗记录编辑器API,包含306个文件,其中包括261个PHP源代码文件、6个EXE可执行文件、5个gitignore文件、5个TXT文本文件、4个JSON配置文件、4个TPL模板文件、3个YAML配置文件、3个.htaccess...

    基于PHP的NoFive Zone! Ajax无刷新的php留言本.zip

    这通常涉及到前端JavaScript与后端PHP的紧密结合,以及可能的JSON数据交换,使得用户交互更加流畅和高效。 【标签】"PHP"表明了该程序是用PHP语言编写的,这是一种广泛应用于服务器端脚本的开放源代码语言,尤其...

    php5应用实例详解

    其继承了PHP4的许多特性,并加入了诸多新的功能,如面向对象编程的改进、异常处理、更好的性能以及对JSON的支持等。 Zend Framework是一个开源的PHP5 Web应用框架,它使用MVC(模型-视图-控制器)设计模式,使...

    Smarty in PHP

    安装Smarty通常是通过Composer进行的,只需在项目根目录下创建composer.json文件,然后添加Smarty的依赖。配置文件通常为config.php,其中可以设置模板目录、编译目录、缓存目录等。 四、Smarty的使用流程 1. 创建...

    PHP语言开发常见问题解决办法入门总结.docx

    .then(response =&gt; response.json()) .then(data =&gt; console.log(data)); ``` #### 代码规范与注释 - **知识点概述**: - **功能介绍**:良好的代码规范和注释习惯可以提高代码的可读性和可维护性。 - **实现...

    基于PHP的Say World 微社区系统(已包括手机版).zip

    4. **模板文件**:如 `.phtml` 或 `.tpl` 文件,用于生成动态页面内容。 - `views/` 或 `templates/`:包含用户看到的页面布局和内容。 5. **上传文件**:用户可能上传的图片、文档等。 - `uploads/`:存储用户...

    基于PHP的IBOS协同办公平台虚拟主机包开源版源码.zip

    2. **配置文件**:如`.ini`、`.yaml`或`.json`,定义了系统的行为和连接信息,如数据库配置、服务器设置等。 3. **样式表**:`.css`文件,用于定义用户界面的样式和布局。 4. **JavaScript文件**:`.js`,负责前端...

    EML企业通讯录管理系统v5.4.15 经典版+手机端实时查看人员联系方式+客户关系管理系统

    EML 企业客户关系管理系统,是基于 Linux 开放性内核和 Apache 基础上 Php+Mysql 的智能 B/S 交互式服务系统。 EML 系统移动端由移动端采用 javascript、html5、ajax、json 等技术。 中间件层包括函数库,由 java 开发...

    基于PHP和HTML的比价系统测试环境源码设计

    本项目为基于PHP和HTML构建的比价系统测试环境,源码共包含891个文件,其中PHP文件736个,HTML文件10个,DHP、TXT、JPG、TTF、TPL、YAML、MD、JSON等文件各占少量比例。该系统旨在为用户提供商品比价服务,支持多种...

    php调用云片网接口发送短信的实现方法

    你可以使用`json_decode`将JSON字符串转换为PHP数组: ```php $backmassage = json_decode($send_data, true); ``` 记得记录发送日志,以便于后续排查问题: ```php Log::info('smsmessagelog: ' . $send_data); ...

    php利用云片网实现短信验证码功能的示例代码

    $json_data = tpl_send($ch, $data); ``` 最后,记得关闭cURL会话: ```php curl_close($ch); ``` 这个示例代码演示了如何通过PHP和云片网的API发送短信验证码,并在前端通过AJAX请求触发发送过程。验证码在...

    TP+EXT帮助示例

    5. JSON数据格式:EXT通常与JSON格式的数据交换,因为JSON轻量且易于解析。 三、ThinkPHP+EXT示例中心 在"index.php"中,可以看到TP框架启动入口,可能包含了EXT的初始化代码,用于加载EXT库并构建应用页面。"test...

    基于PHP和HTML的悟空帮扶API-V2设计源码

    该项目是一款基于PHP和HTML开发的悟空帮扶API-V2源码,包含352个文件,主要包含308个PHP文件、7个stub文件、6个txt文件、5个md文件、4个gitignore文件、4个tpl文件、3个htaccess文件、2个pem文件、2个json文件以及1...

    eml企业通讯录管理系统经典版 v5.4.14

    EML企业客户关系管理系统,是基于Linux开放性内核和Apache基础上Php+Mysql的智能B/S交互式服务系统。 EML系统移动端由移动端采用javascript、html5、ajax、json等技术。 中间件层包括函数库,由java开发,android操作...

    Laravel开发-yunpian-sms

    Yunpian 的 API 返回的 JSON 结果可以用来判断请求是否成功。例如: ```php $response = YunpianSms::single_send('手机号', '短信内容'); if ($response-&gt;isSuccess()) { // 成功发送 } else { // 处理错误,...

Global site tag (gtag.js) - Google Analytics