使用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代码的开销,因为数据并没有改变
如果这些代码都还需要执行,那么缓存又有什么意义呢?反倒增加了生成缓存文件的开销
解决方案 »
- 怎么用PHP调用google map api ?并且将数据库里经纬度表示的点显示在地图上??
- 谁能帮我解释下这些是怎么......
- 关于PHP中php.ini的配置问题
- 我程序中用了乘法就可以,为什么加法就不可以
- 怎么发送带附件的邮件
- 关于MYSQL_QUERY()的兼容性问题,求解
- 一个WEB查分系统(300分)
- 请问在PHP中如何访问MSSQL
- $array[0]与$array['0']的区别
- wordpress 里面如何只获取菜单的名称和链接? wp_nav_menu会把样式取出.
- 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方法是允许传入多个文件的,在此情况下你又如何做呢?
谢谢提醒,这个问题我确实没有注意到,换句话说我一直都在单文件的使用,极少用传入多个文件,呵呵。