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 和 MySQL 基础教程(二)
Oct 09 PHP
php公用函数列表[正则]
Feb 22 PHP
PHP 错误之引号中使用变量
May 04 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 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
Laravel中间件实现原理详解
2016/10/09 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
运动会广播稿100字
2014/01/11 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
远程培训的心得体会
2014/09/01 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
积极心理学课程心得体会
2016/01/22 职场文书