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

类别:编程语言 点击:0 评论:0 推荐:

  以前,在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);//输出变量

..

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

高手们!说句话啊!

本文地址:http://com.8s8s.com/it/it27344.htm