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) -->
分享到:
相关推荐
基于php+tp5.0采用php反射处理RBAC权限管理.zip 始的目录结构如下: www WEB部署目录(或者子目录) ├─application 应用目录 │ ├─common 公共模块目录(可以更改) │ ├─admin 后台模块 │ │ ├─config....
5. **解析JSON数据**:收到响应后,我们需要使用json_decode函数将其转换为PHP数组,然后就可以方便地访问书籍的各个属性。例如: ```php $data = json_decode($response, true); $title = $data['title']; $...
$smarty->display('index.tpl'); ``` 接下来,我们关注AJAX部分,这里主要使用jQuery库来实现无刷新的数据交换: 1. **jQuery库**:`jquery.js`是一个轻量级的JavaScript库,简化了DOM操作、事件处理和Ajax交互...
taskPHP是一个基于PHP的多进程定时任务框架,采用多...项目包含39个文件,其中30个PHP源文件、6个Markdown文档、1个JSON配置文件、1个CMD脚本文件、1个TPL模板文件,为开发者提供了一个灵活且强大的任务调度解决方案。
graduation 毕业设计代码,还没完成!但可以跑哦~ Fis3+Es6+Smarty+Tmpl 项目实战 阅读以下部分假定你已经了解: 构建工具 Fis3 基于Smarty的解决方案 Fis-Smarty ... └── config # config/*.json 发布位置
本项目是基于PHP开发的医疗记录编辑器API,包含306个文件,其中包括261个PHP源代码文件、6个EXE可执行文件、5个gitignore文件、5个TXT文本文件、4个JSON配置文件、4个TPL模板文件、3个YAML配置文件、3个.htaccess...
这通常涉及到前端JavaScript与后端PHP的紧密结合,以及可能的JSON数据交换,使得用户交互更加流畅和高效。 【标签】"PHP"表明了该程序是用PHP语言编写的,这是一种广泛应用于服务器端脚本的开放源代码语言,尤其...
其继承了PHP4的许多特性,并加入了诸多新的功能,如面向对象编程的改进、异常处理、更好的性能以及对JSON的支持等。 Zend Framework是一个开源的PHP5 Web应用框架,它使用MVC(模型-视图-控制器)设计模式,使...
安装Smarty通常是通过Composer进行的,只需在项目根目录下创建composer.json文件,然后添加Smarty的依赖。配置文件通常为config.php,其中可以设置模板目录、编译目录、缓存目录等。 四、Smarty的使用流程 1. 创建...
.then(response => response.json()) .then(data => console.log(data)); ``` #### 代码规范与注释 - **知识点概述**: - **功能介绍**:良好的代码规范和注释习惯可以提高代码的可读性和可维护性。 - **实现...
4. **模板文件**:如 `.phtml` 或 `.tpl` 文件,用于生成动态页面内容。 - `views/` 或 `templates/`:包含用户看到的页面布局和内容。 5. **上传文件**:用户可能上传的图片、文档等。 - `uploads/`:存储用户...
2. **配置文件**:如`.ini`、`.yaml`或`.json`,定义了系统的行为和连接信息,如数据库配置、服务器设置等。 3. **样式表**:`.css`文件,用于定义用户界面的样式和布局。 4. **JavaScript文件**:`.js`,负责前端...
EML 企业客户关系管理系统,是基于 Linux 开放性内核和 Apache 基础上 Php+Mysql 的智能 B/S 交互式服务系统。 EML 系统移动端由移动端采用 javascript、html5、ajax、json 等技术。 中间件层包括函数库,由 java 开发...
本项目为基于PHP和HTML构建的比价系统测试环境,源码共包含891个文件,其中PHP文件736个,HTML文件10个,DHP、TXT、JPG、TTF、TPL、YAML、MD、JSON等文件各占少量比例。该系统旨在为用户提供商品比价服务,支持多种...
你可以使用`json_decode`将JSON字符串转换为PHP数组: ```php $backmassage = json_decode($send_data, true); ``` 记得记录发送日志,以便于后续排查问题: ```php Log::info('smsmessagelog: ' . $send_data); ...
$json_data = tpl_send($ch, $data); ``` 最后,记得关闭cURL会话: ```php curl_close($ch); ``` 这个示例代码演示了如何通过PHP和云片网的API发送短信验证码,并在前端通过AJAX请求触发发送过程。验证码在...
5. JSON数据格式:EXT通常与JSON格式的数据交换,因为JSON轻量且易于解析。 三、ThinkPHP+EXT示例中心 在"index.php"中,可以看到TP框架启动入口,可能包含了EXT的初始化代码,用于加载EXT库并构建应用页面。"test...
该项目是一款基于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企业客户关系管理系统,是基于Linux开放性内核和Apache基础上Php+Mysql的智能B/S交互式服务系统。 EML系统移动端由移动端采用javascript、html5、ajax、json等技术。 中间件层包括函数库,由java开发,android操作...
Yunpian 的 API 返回的 JSON 结果可以用来判断请求是否成功。例如: ```php $response = YunpianSms::single_send('手机号', '短信内容'); if ($response->isSuccess()) { // 成功发送 } else { // 处理错误,...