仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4738|回复: 20
打印 上一主题 下一主题

[学习教程] PHP编程:教你若何用PHP制造静态网站的模板框架

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:29:55 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...静态|模板       第一个目标是议论得最多的目标,它假想的情况是:一组法式员编写用于生成页面内容的PHP剧本,同时另外一组设计人员设计HTML和图形以掌握页面的终究外不雅。分别功效和结构的根基思惟就是使得这两组人可以各自编写和利用自力的一组文件:法式员只需关怀那些只包括PHP代码的文件,无需关怀页面的外不雅;而页面设计人员可以用本人最熟习的可视化编纂器设计页面结构,无需忧虑损坏任何嵌入到页面的PHP代码。

  假如你已经看过几个关于PHP模板的教程,那末你应当已分明模板的任务机制。思索一个复杂的页面部分:页面的上方是页头,右边是导航条,其他局部是内容区域。

  可以看出页面若何由模板机关而成:main模板掌握着全部页面的结构;header模板和leftnav模板掌握着页面的公共元素。花括号“{}”外面的标识符是内容占位符。利用模板最次要的优点在于界面设计者可以依照本人的志愿编纂这些文件,好比设置字体、修正色彩和图形,或完整地改动页面的结构。界面设计者可以用任何通俗HTML编纂器或可视化东西编纂这些页面,由于这些文件都只包括HTML代码,没有任何PHP代码。

  PHP代码全体保留到独自的文件中,这个文件也就是由页面URL实践挪用的文件。Web办事器经由过程PHP引擎解析该文件,然后把了局前往给阅读器。普通地,PHP代码老是静态地生成页面内容,好比查询数据库或履行某种盘算等。上面是一个例子:
  1. // 此处的PHP代码设置$content使其包括适合的页面内容$tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->FastPrint('MAIN'); ?>
复制代码
  这里咱们利用的是盛行的FastTemplate模板类,但其根基思绪关于其他很多模板类来讲都一样。起首你实例化一个类,告知它到哪里去寻觅模板文件和哪个模板文件与页面的哪局部对应;接上去是生成页面内容,把了局付与内容的标识符;然后,顺次解析各个模板文件,模板类将履行需要的交换操作;最初把解析了局输入到阅读器。

  这个文件完整由PHP代码组成,不包括任何HTML代码,这是它最大的长处。如今,PHP法式员可以集中精神编写生成页面内容的代码,而不用为了若何生成HTML去准确地格局化终究页面而忧虑。

  很轻易看出采取模板还有第二个优点。如上例所示,页面右边的导航条独自保留为一个文件,咱们只需编纂这一个模板文件就能够改动网站一切页面右边的导航条。

  防止页面元素反复

  “这的确不错”,你或许会想,“我的网站次要就是由大批的静态页面组成。如今我可以从一切页面中删除它们的公共局部,要更新这些公共局部其实太费事了。今后我就能够用模板制造出很轻易保护的一致页面结构。”但工作并不是这么复杂,“大批的静态页面”道出了成绩的地点。

  请思索下面的例子。这个例籽实际上只要一个example.php页面,它之所以可以生成全部网站的一切页面,是由于它使用了URL中的查询字符串从数据库之类的信息源静态地机关出页面。

  咱们当中的大多半人所运转的网站其实不必定都无数据库撑持。咱们的网站大多半由静态页面组成,然后用PHP在这里、那边加上一些静态功效,好比搜刮引擎、反应表单等。那末,若何在这类网站上使用模板呢?

  最复杂的办法是为每个页面复制一份PHP文件,然后在每个页面中把PHP代码里代表内容的变量设置成适合的页面内容。例如,假定有三个页面,它们分离是主页(home)、关于(about)和产物(product),咱们可以用三个文件分离生成它们。这三个文件的内容都类如:
  1. <p>但愿你可以喜好本网站</p>"; $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->FastPrint('MAIN'); ?>
复制代码
  明显,这类办法有三个成绩:咱们必需为每个页面复制这些庞杂的、牵扯到模板的PHP代码,这与反复公共页面元素一样使得页面难以保护;如今文件又夹杂了HTML和PHP代码;为内容变量赋值将变得十分坚苦,由于咱们必需处置好大批的特别字符。

  处理这个成绩的关头就在于分别PHP代码和HTML内容,固然咱们不克不及从文件中删除一切的HTML内容,但可以移出绝大多半PHP代码。

  静态网站的模板框架:
  1. ob_end_clean(); $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->FastPrint('MAIN'); } ?>
复制代码
   ageStart函数起首创立并设置了一个模板实例,然后启用输入缓存。尔后,一切来自页面自己的HTML内容都将进入缓存。pageFinish函数掏出缓存中的内容,然后在模板对象中指定这些内容,最初解析模板并输入完成后的页面。

 这就是全部模板框架全体的任务进程了。起首编写包括了网站各个页面公共元素的模板,然后从一切页面中删除全体公共的页面结构代码,代之以三行永久无需修改的PHP代码;再把FastTemplate类文件和prepend.php到场到包括途径,如许你就失掉了一个页面结构可以集中掌握的网站,它有着更好的牢靠性和可保护性,并且网站级的大局限修正也变得相当轻易。  会有很多高手的鼓励,新手的支持,慢慢你劲头就十足,有更多的信心和兴趣去学。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-14 08:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表