当前位置: 萬仟网 > IT编程>开发语言>PHP > Php Ctemplate引擎开发相关内容

Php Ctemplate引擎开发相关内容

2020年05月22日  | 萬仟网IT编程  | 我要评论
1.简介

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

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

那么c++输出便是:
hello john smith
you have just won (这里是执行random%100000 随机数)
well ,(这里是执行random%100000 的随机数再 * 0.83),after taxes
好吧,总结一下 就是把c++源码中的template对象加载 tpl(我们可以称它为模版)文件之后,再填充templatedictionary中的对应的值,最后输出。听起来很拗口是吧,简单点把后端标签对应值填充到tpl的{{标签}}中。
详细的请参见
那么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 一样。
详见
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的源码好像是基于zend编写的。因为本人对c++和php都不是很精通,实在也没有能力去重新编写这套扩展,所以只能想了个折中的办法:把ctemplate用atl com 包装起来,模拟php ctemplate的函数和方法。

3.我的尝试

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

 

我包装的atl com 功能我包装在了core.php 中。

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
Copyright © 2020  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com