PHP中,使用template,如何把自定义函数解析详解

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

以前,在CSDN的论坛上,问了上面的这个问题,可是没有人能给出一个正确的答案。非但如此,尽然还有人说俺是PIG,我晕!

让我们来看看这个骂我是PIG的人的回答:

这个问题都问?????????????????????????

function aa(){

echo "pig";

}

aa();

还有一个自以为神秘的人的回答:

实现过,但拒绝回答。

大家看看,这让能让人不生气吗?

也算是争口气吧,现在,我自己把问题给解决了,祥解如下:

自定函数:

------------------------------------

<?php

function menu($color1="",$color2=""){

$domain="http://www.duojiao.com.cn/";

?>

<table border="0" cellpadding="0" style="border-collapse: collapse" width="578" id="table43" height="50">

<tr>

<td width="578" style="text-align: center; vertical-align: middle" bgcolor="<?php echo $color1; ?>"> <font color="#FFFFFF"><span style="letter-spacing: 2px"> <a href="<?php echo $domain; ?>"><font color="white">首&nbsp; 页</font></a></span><span style="letter-spacing: 0px"> ┃ </span><span style="letter-spacing: 2px"><a href="<?php echo $domain; ?>thjs.php"><font color="white">图画江山</font></a></span><span style="letter-spacing: 0px"> ┃ </span><span style="letter-spacing: 2px"><a href="<?php echo $domain; ?>sight.php"><font color="white">行游天下</font></a></span><span style="letter-spacing: 0px"> ┃ </span><span style="letter-spacing: 2px"><font color="white">休闲假日</font></span><span style="letter-spacing: 0px"> ┃ </span><span style="letter-spacing: 2px"><font color="white">出行常识</font></span><span style="letter-spacing: 0px"> ┃ </span><span style="letter-spacing: 2px"><font color="white">视频导游</font></span><span style="letter-spacing: 0px"> ┃ <font color="white">精选线路</font></span></font></td>

</tr>

<tr>

<td width="578" bgcolor="<?php echo $color2; ?>" style="text-align: center; vertical-align: middle; border-width: 1px"> <span style="letter-spacing: 2px; color: #FFFFFF;"> <a href="<?php echo $domain; ?>travel.php"><font color="white">旅行社</font></a></span><span style="letter-spacing: 0px; color: #FFFFFF;"> ┃ </span> <span style="letter-spacing: 2px; color: #FFFFFF;"><a href="<?php echo $domain; ?>grogshop.php"><font color="white">酒店宾馆</font></a></span><span style="letter-spacing: 0px; color: #FFFFFF;"> ┃ </span><span style="letter-spacing: 2px; color: #FFFFFF;"><a href="<?php echo $domain; ?>ticket/"><font color="white">预订票务</font></a></span><span style="letter-spacing: 0px; color: #FFFFFF;"> ┃ </span><span style="letter-spacing: 2px; color: #FFFFFF;"><a href="<?php echo $domain; ?>info/index.htm" target="_blank"></font><font color="white">多娇网络</font></a></span><span style="letter-spacing: 0px; color: #FFFFFF;"> ┃&nbsp; </span><span style="letter-spacing: 2px; color: #FFFFFF;"><a href="http://voip.duojiao.com.cn"><font color=white>I P 业务</font></a></span><span style="letter-spacing: 0px; color: #FFFFFF;"> ┃ <a href="http://shop.duojiao.com.cn"><font color="white">旅游商城</font></a> ┃ <a href="http://bbs.duojiao.com.cn"><font color="white">旅游论坛</font></a></span></td>

</tr>

</table>

<?php

return ob_get_clean();//它的作用是得到函数执行后的内容,但不显示出来!就这样简单,

//看不起我?有本事就把正确公布出来啊!

}

?>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

------------------------------------------

这里,用到一个关键的函数:ob_get_clean

我以前也是很少用到这类有关缓存的函数,但是它确实能我们带来不少好处。ob_get_clean用到这里的目的是为了得到自定义函数执行后得到的HTML代码,并清空缓存区,同时,为了不影响其它代码的正常执行,我们应该注意,在使用类似自定函数的时候,应用flush把缓存区的内容输出一下,在调用这样的自定义函数。

接着看一下:

-------------------------------

<?php

//$time_start=explode(" ",microtime());

include_once("phpfun/gzdoc.php");

require_once("phpfun/template.php");

require_once("phpfun/conn.inc.php");

require("phpfun/newmenu.php");

$query="select * from lydt where num=".$_GET['num'];

$result=mssql_query($query);

$rows=mssql_fetch_array($result);

$time="<div align=right class='font12pt'>发表时间".$rows['timeofthis']."</div>";

$img=$rows['pic'];

if($img='none.jpg') $image="";

else{

$img="image/uploadpic/lydt/".$img;

$size=getimagesize($img);

$image="<img src='".$img."' ".$size[3].">";

}

$menu=menu();

$content="<div class='font12pt'>".$rows['content']."</div>";

$title="<div align=center><font color='' size=4><b>".$rows['title']."</b><font></div>";

$mytemp = new Template("template"); //创建一个模板实例mytemp,如果模板就在当前目录,那么使用"."就可以

$mytemp->set_file("MyFileHandle","list.htm");

$mytemp->set_var("title", $title);

$mytemp->set_var("time",$time);

$mytemp->set_var("image",$image);

$mytemp->set_var("content",$content);

$mytemp->set_var("menu",$menu);

$mytemp->parse("Out","MyFileHandle");

$mytemp->p("Out");

gzdocout();

flush();

?>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<link href="css/1.css" rel="stylesheet" type="text/css">

------------------------------------------------------------------------------------------------------

关键语句如下:

..

$menu=menu();//把自定函数执行的结果存入一个变量,

..

..

$mytemp->set_var("menu",$menu);//输出变量

..

好了,到现在,我已经可以用自定义函数替代模板里的相应内容了。

高手们!说句话啊!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航