2012-4-22 12点
看了李智欢的日志,深受启发,于是我也决定写一份
无限期连载
,所以我的想法是先进行UBB替换,然后再把模板交给模板引擎处理。
时间退回4月19日
我看了
@趣航科技小智 写的贴“
绿虎论坛之我观”,他指出了虎绿林程序一些很严重的问题。
其实我也知道,虎绿林把逻辑和显示混在一起的方法非常不方便。比如,有时候为了修改排版,我不得不把一段php代码从一个地方移到另一个地方。而我的手机又不支持复制,所以我不得不重新输入那些代码!
于是我产生了一个想法:重做虎绿林程序,使用一个正规的模板引擎。
我看了一些常用模板引擎的介绍,最终决定用Smarty,因为它是编译型的(虎绿林那个简陋的“模板引擎”也是编译型的),速度会很快。
4月20日
我下载了smary3.1.8,README是英文的。所以我开始在php100上看smarty中文手册。
4月21日
等我看完之后我才发现,自己看的是smarty2的手册,很多属性和方法都过时了,我晕!
开始修改hu60wap5/0wap的类(其实都是一些static的函数,没有一个类是需要new的,我是把class::function当成命名空间来用了。
下午4点,hu60wap6的架构完成,简单介绍一下:
根目录
m.php //所有页面的入口文件
config.inc.php //主配置文件。在任何目录的php都可以requeir_once它,然后就可以直接使用虎绿林的类库了。使用了自动加载类(autoload)的机制。
class //存放类文件。命名规则是classname.php,并且保持小写。比如,类myDB就要保存成class/mydb.php。符合命名规则的类在你第一次使用它时可以被自动加载,不需要include。
func //存放函数和函数库,使用require_once FUNC_DIR.'/myfile.php';加载
sub //存放“过程调用”,如用于防止CC攻击的php等。使用include SUB_DIR.'/myfile.php';加载(用require_once也行)
config //存放配置文件。用require_once CONFIG_DIR.'/myfile.php';加载。如果是smarty的配置文件,保存成myfile.conf,并可用{load_conf file="myfile.conf"}加载
page //分类存放php程序、模板和其他相关文件的目录。
比如,要建立一个论坛,先在page目录建立一个子目录,命名为bbs,然后在page/bbs里放一个php,命名为tz.php,然后就可以使用…/m.php/bbs.tz.xhtml调用该php了,具体规则在其他文档中介绍。
temp //临时目录。目前有两个子目录:tplc 这是smarty模板的编译目录;pagecache smarty的输出缓存目录。在使用smarty的缓存之前请先了解清楚它的机制,不建议滥用缓存。
4月22日
写了page/common/(head|foot).(xhtml|wml).tpl,写了page/error/no_tpl.tpl和no_page.(tpl|php)
4月23日
尝试性的安装了php5.4.0(fastcgi模式。PHP5.3以后就不支持isapi了,而且要装VC9运行库)。发生一个奇怪的问题:我自定义的class/smarty/plugins/resource.hu60.php在PHP5.4总是找不到模板,但PHP5.2正常。不解。
4月23日
我仔细分析了错误提示(感谢
谷歌翻译),它说:“smarty_resource_hu60_source函数的第三个参数是引用类型,但是传递的是值类型”。
第三个参数,&$smarty!!我恍然大悟:PHP5中object的传递已经默认使用引用传递了,不用再加&!而我之所以加了&,完全是因为我复制的php100上旧smarty插件接口的参数。再次感到杯具。
4月27日
正在把form表单类移植到模板引擎,让模板也能方便地构建xhtml/wml兼容表单。
form插件的语法非常接近html:
{form method="post" action="a.b.c"}
A:{input type="text" name="a"}
{input type="submit" value="提交"}
{endform}
4月28日
switch遇到错误,怎么也找不到问题所在。最后我好好想了想,终于发现原来我把case写成了cast!在魔兽宏里写cast顺手了--.
21点40,已完成form的smarty插件。
5月1日
模仿smarty的插件机制,添加了reg_page_bid机制,使用户可以很容易地添加一个新的页面类型。比如用户要加一个电脑版,只要写好func/hu60.reg.page.html.php和page/$cid/$pid.html,(在sub/reg_page_bid.php里注册一下,)并访问m.php/$cid.$bid.html就大功告成。
5月7日
/6/m.php/user.login.登陆页。我觉得配色非常难看,求建议。
5月9日
添加了extid机制,可以使用非常简洁(且搜索引擎友好)的网址传递参数,如m.php/bbs.tz.13256.xhtml