Php Ctemplate引擎开发相关内容


Posted in PHP onMarch 03, 2012

1.简介

也许你对Php Ctemplate不了,解甚看到这个名词,只知道它的前半部分是一种编程语言。没有关系让我来给大家介绍一下这个基于php语言的标签模版引擎(请允许我这样去翻译这套web开发解决方案,尽管我可能翻译的不准确)。

先简短说一下他的历史。了解Php Ctemplate先要知道Ctempalte;Ctempalte全称是Google Ctemplate。它是一种用c++语言、简单但是效率非常高的网页模版引擎。让我们来看一段代码,聪明的你立刻就知道它怎么用了(来自官方Demo)

Php Ctemplate引擎开发相关内容那么C++输出便是:
Hello John Smith
You Have just won (这里是执行random%100000 随机数)
Well ,(这里是执行random%100000 的随机数再 * 0.83),after taxes
好吧,总结一下 就是把c++源码中的Template对象加载 tpl(我们可以称它为模版)文件之后,再填充TemplateDictionary中的对应的值,最后输出。听起来很拗口是吧,简单点把后端标签对应值填充到tpl的{{标签}}中。
详细的请参见http://google-ctemplate.googlecode.com/svn/trunk/doc/index.html
那么PHP ctemplate呢?大家都知道PHP扩展吧,玩过PHP的朋友都知道gd,exif,mysql,mysqli这些扩展吧。对,就是php.ini 文件里“extension=”那里的dll。我总结PHP ctemplate就是用PHP扩展接口的格式,包装了Google Ctemplate,让PHP具有Google Ctemplate的功能。再通俗点体现在代码上就是:tpl文件不变,只是把c++ 文件变成了php文件。至于它的用法我想我在这里就不多介绍了,他和Google Ctempalte 一样。
详见http://code.google.com/p/php-ctemplate/
2.WIN32下可以吗
也许你会很快意识到这种模版引擎,符合我们常见的MVC吧。没错,就是这样。但是很遗憾,PHP Ctemplate只能在Freebsd系统中运行,win32环境中的php,我至今没有在网上发现对应的PHP ctemplate dll,我也咨询过PHP ctemplate的作者,他好像不太愿意在win32环境中编译这些代码;我曾经和我开发c++的朋友“阿呆”试着编译,我们找了php源码+ Ctemplate源码+PHP ctemplate源码编译出了win32下的PHP ctemplate扩展,但是很奇怪,每次php启动加载PHP ctemplate时,php引擎就会出现异常,PHP ctemplate不能正常加载。

如果成功加载php ctemplate则会在phpinfo 中显示:

Php Ctemplate引擎开发相关内容

      我也看了下PHP ctemplate的源码好像是基于Zend编写的。因为本人对c++和php都不是很精通,实在也没有能力去重新编写这套扩展,所以只能想了个折中的办法:把Ctemplate用ATL COM 包装起来,模拟PHP ctemplate的函数和方法。

3.我的尝试

      之所以这么曲折,是因为用这套框架后,根本没有办法调试PHP代码,我试过在freebsd的环境中安装xdebug,好吧,勉强能进行远程调试。可是freebsd是没有图形界面的,哎,无奈下安装了gnome,只能暂时这样了。出于好奇和不服气,我把Ctemplate用ATL COM 包装起来,模拟PHP ctemplate的函数和方法,但是只完成了一半。在这里要特别感谢“阿呆”同志,没有他我也根本写不出c++的ATL。下面是ATL COM里面的方法(只完成了一部分)。

 

Php Ctemplate引擎开发相关内容

我包装的ATL COM 功能我包装在了core.php 中。

Php Ctemplate引擎开发相关内容

      如果大家有兴趣可以找我要源码继续完善,因为它是COM的所以ASP也可以使用,我会把dll提供下载。如果大虾们成在win32下成功编译使用PHP ctemplate,那我更求之不得。
下载COM文件 phpctempalteCOM

PHP 相关文章推荐
PHP的FTP学习(二)[转自奥索]
Oct 09 PHP
php 正则 过滤html 的超链接
Jun 02 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
php禁止浏览器使用缓存页面的方法
Nov 07 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
Oct 16 PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 #PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 #PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 #PHP
PHP设计模式之装饰者模式
Feb 29 #PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 #PHP
mysql总结之explain
Feb 27 #PHP
php&mysql 日期操作小记
Feb 27 #PHP
You might like
使用php测试硬盘写入速度示例
2014/01/27 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
Node.js模块加载详解
2014/08/16 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
判断网页编码的方法python版
2016/08/12 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
python super()函数的基本使用
2020/09/10 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
Django 实现图片上传和下载功能
2020/12/31 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
学生会招新策划书
2014/02/14 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
关于军训的感想
2015/08/07 职场文书
python保存图片的四个常用方法
2022/02/28 Python