极品分享

PHP学习:简单的PHP代码分离模板技术

最近了解到了PHPWIND里的一个代码分离的小技巧

大体就是在PHP文件中通过包含文件去生成HTML文件,在PHP文件中定义好变量,html文件中用注释的方式隐藏PHP代码,在PHP文件中包含的时候读取输出HTML代码显示。其中html文件中的注释部分用PHP语法执行,替换变量和循环读取变量值都是可以用PHP语法的,所以也就可以运用这种方法去做简单的美工与程序的分工了。

文件一:template.php

<?php
//Example of simple template

$sitename = "Rossy's blog";
$name       = "ybfqlyq";
$siteurl    = "http://www.ybfq.com";
$email      = "Rossy.cn@gmail.com";
$titles     = array("Rossy","ybfqlyq","ybfq","cszj","dongguan","chinese","world");
$content    = "This is a example of simple template with php. I am a newer phper and looking forword to read your comments here . Thank you for you coming . I am Rossy from China . My website address is http://www.ybfq.com . Email address is : Rossy.cn#gmail.com . ";

require_once "template.htm";
?>

文件二:template.htm

<!--
<?php
print <<<EOT
-->
<html>
<head>
<title>Example of simple template.. Powered by Rossy.www.ybfq.com</title>
</head>
<body>
<table width="88%" border="0" align="center" cellpadding="2" cellspacing="2">
    <tr>
      <td align="center"><h2><A href="{$siteurl}">{$sitename}</A></h2></td>
    </tr>
    <tr>
      <td><p>Website : <A href="{$siteurl}">{$sitename}</A></p>
      <p>&nbsp;</p></td>
    </tr>
</table>
<TABLE width="88%" border=0 align="center" cellPadding=5 cellspacing="1" bgcolor="#CCCCCC">
<TBODY>
<TR>
<TD width="25%" bgcolor="#FFFFFF">
<strong>Menu : </strong><br>
<!--
EOT;
foreach($titles as $title) {
print <<<EOT
-->
<LI>{$title}<BR></LI>
<!--
EOT;
}
print <<<EOT
--></TD>
<TD bgcolor="#FFFFFF">{$content}<br>
    {$content}</TD>
</TR>
</TBODY>
</TABLE>
<p>
    <!--
print <<<EOT
-->
</p>
<p>&nbsp; </p>
<TABLE class=topborder cellSpacing=1 cellPadding=1 width=88% align=center border=0>
    <TBODY>
    <TR align=middle height=22>
      <TD>|&nbsp;<A 
        onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('{$siteurl}');" 
        href="#">HomePage</A>&nbsp;|&nbsp;<A 
        href="javascript:addToFavorites(document.location.href,document.title);">Favorite</A>&nbsp;|&nbsp;<A 
        href="mailto:{$email}">Email this page</A>&nbsp;|&nbsp;<A 
        href="{$URL}admin/" 
        target="_blank">Manage website</A>&nbsp;|&nbsp;</TD></TR>
    <TR vAlign=bottom align=middle height=20>
      <TD>Copyright&copy; 2007 <A href="{$siteurl}">{$sitename}</A><BR>
Powered by <A href="{$siteurl}">{$name}</A>
      </TD>
    </TR>
</TBODY>
</TABLE>
</body>
</html>
<!--
EOT;
?>
-->

 

两天后...我也想用这种方法做个上传功能模块
index.php:
以下函数主要作用是读取一个目录有几个子目录并将子目录名放在一个数组中
 

<?php
function listdir($dir_name){
$dir=opendir($dir_name);
    while ($file_name=readdir($dir)) {
         if(($file_name!='.') && ($file_name!='..')) {
    if (is_dir($dir_name."/".$file_name)){
      $file_names[] = $file_name;
      }
         }
    }
    closedir($dir);
}
listdir("imgclass");//imgclass为父目录名
include("index.tpl");
?>
index.tpl
<!--
<?php
print <<<EOT
-->
<p>上传图片:</p>
<form enctype="multipart/form-data" method="post" action="index.php?action=uploadimg">
<select name="imgclass">
<!--
EOT;
foreach($file_names as $file_name){
print <<<EOT
-->
<option value="{$file_name}">{$file_name}</option>
<!--
EOT;
}
print <<<EOT
-->
</select>
<input type="file" name="image" size="50" value="浏览"   />
<input type="submit" value="上传图片">
</form>
<!--
EOT;
?>
-->
 

结果就是失败...下拉列表框中读不到数据...头都快想炸了...有点想放弃了(都是因为基本功不扎实啊)
想啊...想的...是不是变量的作用范围问题呢,所以值传不过来呀!
将listdir()中的$file_names定义成全局的应该没问题了吧,试一下,,哈哈,,:),果然是这样...运行正常哦!

2012-02-26 0 /
PHP学习
/
标签: 

评论回复

回到顶部