分享

php网页静态化及模板原理演示

 quasiceo 2014-05-02
看了一些开源系统的,简单的总结一下php的模板及静态原理。
先贴代码,再做解释。
index.php
Php代码 复制代码 收藏代码
  1. <?php   
  2. //如果已存在静态页面,直接读取并显示   
  3. if(file_exists('index.html'))   
  4. {   
  5.     echo file_get_contents('index.html');   
  6. }   
  7. else  
  8. {   
  9.     //这里把需要的变量都附好值   
  10.     $var = "Hello,World.";   
  11.     //开启输出缓存   
  12.     ob_start();   
  13.     //这里调用模板,模板里嵌入一些PHP标签,用来显示变量的值   
  14.     require_once('template.php');   
  15.     //这里得到输出缓存,也就是调用模板后,将来要显示到页面上的内容   
  16.     $out = ob_get_contents();   
  17.     //把要显示的内容保存成一个文件   
  18.     file_put_contents('index.html',$out);   
  19.     //输出   
  20.     ob_end_flush();   
  21. }  

template.php
Php代码 复制代码 收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">    
  2. <html xmlns="http://www./1999/xhtml">    
  3. <head>    
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
  5. <title>HTML</title>    
  6. </head>    
  7. <body>    
  8. <hr/>   
  9. <p>   
  10. <?php echo $var;?>   
  11. </p>   
  12. <hr/>   
  13. </body>   
  14. </html>  

代码解释见注释。
把上面的两个代码放在同一个目录下,然后访问看看,目录下面是不是多了一个HTML文件。这就是产生的静态页面,你可以把这个文件打开看看并和template.php比较一下。

总体原理很简单,看完注释就能明白个大概,不过这只是个基本的演示。如果是真正要使用到系统中,还需要完善以下问题。
1、缓存的静态文件的过期及更新问题,上面的例子里,只要有缓存存在,就直接去读。就算变量$var的值改变了,也不会更新内容。所以实际使用时,在变量或模板改变时,更新缓存的静态文件,或者通过一些方式设置缓存有效期,过期时重新生成。
2、功能分解,上面的例子,两个页面就演示了整个流程,为了便于在项目中使用,我们需要对上面页面中涉及到的功能进行拆分,分别放在不同的函数里实现。比如,调用模板不可能只是一句require就搞定。读缓存也应该进行细化,file_get_contents一句话是不行的。
3、模板拆分,应该充分发挥模板重用,不能说,一个php页面对应一个模板,而应该是按功能分。比如,模板A是用来显示新闻列表的,那这个模板,可以在任何显示新闻列表的地方调用。而不应该定义为:模板A是news.php对应的的模板,这样的话,比如:news.php里需要显示一个新闻列表,index.php里用模板B,如果index.php里也需要显示新闻列表,这两块模板就重复了。

大概想到这些。欢迎拍砖

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多