使用phplib template类的多在php4环境下,你写成php5格式的是否不妥“/*输出模板解析后内容,请务必使用这个函数而不是template中的parse()然后p()*/
public function pparse($target, $handle, $append = false)”
这样继承类是不妥当的,原来template提供的p、ppase方法都广泛的被使用。不能因使用你的类而对已有程序做大量修改没有看到你的类中有启动“缓存”的方法,可能是全自动的吧?但这就带来一个问题
一般使用template的程序流程为
$page = new template();
$page->set_file(); //用你的setFile方法去替换set_file方法?
...
这里是取得数据和设置模板变量的代码
...
$page->parse(); //你到这里才产生缓存文件
$page->p();
或
$page->pparse();
还要加多少代码才能实现缓存呢?
isCached、refresh、printCache等方法都需要显式的调用吗?
使用缓存的目的是要减少取得数据和设置模板变量及产生html代码的开销,因为数据并没有改变
如果这些代码都还需要执行,那么缓存又有什么意义呢?反倒增加了生成缓存文件的开销
public function pparse($target, $handle, $append = false)”
这样继承类是不妥当的,原来template提供的p、ppase方法都广泛的被使用。不能因使用你的类而对已有程序做大量修改没有看到你的类中有启动“缓存”的方法,可能是全自动的吧?但这就带来一个问题
一般使用template的程序流程为
$page = new template();
$page->set_file(); //用你的setFile方法去替换set_file方法?
...
这里是取得数据和设置模板变量的代码
...
$page->parse(); //你到这里才产生缓存文件
$page->p();
或
$page->pparse();
还要加多少代码才能实现缓存呢?
isCached、refresh、printCache等方法都需要显式的调用吗?
使用缓存的目的是要减少取得数据和设置模板变量及产生html代码的开销,因为数据并没有改变
如果这些代码都还需要执行,那么缓存又有什么意义呢?反倒增加了生成缓存文件的开销
解决方案 »
- 帝国cms首页如何调取自定义的字段
- PHP - 如何实现Textarea输入资料,能Enter自动换行 (急)
- window下php如何读取韩文文件
- 一个PHP的菜鸟级别问题
- Warning: mysql_fetch_array()
- 最近把网站项目的编码改成了UTF-8的格式,结果问题来了…
- 百度查询收录api接口
- 请教一个关于调试的问题
- Apache专栏人气不足,所以只好跑到这里来了: 关于带锚的url的重写>????
- 为什么一定要登陆二次才能登陆????请大家帮忙!在线等待!!!!
- PHP发送EMAIL求一个完整的成功的例子!急急急!若分不够请讲!
- 问一个棘手得问题,关于流媒体文件访问控制的
确实现在php4环境使用仍然较多,但是PHP5替换PHP4的趋势是难免的,而且PHP5提供的对象模型要比PHP4的强很多而且效率上要好。
2,“这样继承类是不妥当的,原来template提供的p、ppase方法都广泛的被使用。不能因使用你的类而对已有程序做大量修改”。
这个类的本意是,在进行大量数据库操作的时候,如果在某段时间的需求数据是相同的,那么显然大量的数据库复杂查询不如少量的文件读取输出操作要好。但是如果数据需求是变化的,那么使用原来的Template类要好。小结一点就是:在你需要使用的时候使用,而不是整篇替换原有的。
3,“还要加多少代码才能实现缓存呢?”
不需要你增加代码,你只要:
if (cacheTemplate::isCached("uniqid")) printCache("uniqid");
else {
//跟template中的一样
$cacheTPL = new cacheTemplate();
$cacheTPL->setFile("some","some.html","uniqid");
........ $cacheTPL->pparse("somes","some");//只有这里也就是最后输出的时候不用parse()然后p();程序中间还是可以使用的。比如模板块的解析之类的都可以用parse()
}4,"使用缓存的目的是要减少取得数据和设置模板变量及产生html代码的开销,因为数据并没有改变
如果这些代码都还需要执行,那么缓存又有什么意义呢?反倒增加了生成缓存文件的开销"
解释同2
if (cacheTemplate::isCached("uniqid")) printCache("uniqid");
应该是if (cacheTemplate::isCached("uniqid")) cacheTemplate::printCache("uniqid");
public function printCache($uniqID)
{
$cacheFile = self::$cacheDir."/".md5($uniqID);
if (self::isCached($uniqID)) {
$fhandle = @fopen($cacheFile, "rb");
if ($fhandle) {
while(!feof($fhandle)) {
print fgets($fhandle,1024);
}
fclose($fhandle);
return true;
}
}
return false;
}
中,缓存的文件是直接输出的。那么
if (cacheTemplate::isCached("uniqid")) printCache("uniqid");
else {
//跟template中的一样
$cacheTPL = new cacheTemplate();
$cacheTPL->setFile("some","some.html","uniqid");
不会使输出的次序错乱吗?
template的set_file方法是允许传入多个文件的,在此情况下你又如何做呢?
谢谢提醒,这个问题我确实没有注意到,换句话说我一直都在单文件的使用,极少用传入多个文件,呵呵。