仓酷云

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

[学习教程] PHP网页编程之模板--为何和若何在PHP中利用它们

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:53:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在我开始学习PHP以前,我从未想过要做软件工程,即便是在去听过华育国际的关于软件工程的美好前景后,因为我一直都没有想过要与代码打交道,而是想学好所学专业,做个网络工程师或者是网络安全人员。模板   是不是你面对着创立由一个编程人员(能够就是你)和一个设计人员同时停止创作的网站?你不晓得若何使任务对你俩来讲变得轻易吗?我来给你谜底:利用FastTemplate来使你的站点更轻易定制!

  好了,你能够想晓得为何你要利用FastTemplates。


・可以在几秒钟改动你的全部站点的外不雅
・笼统法式设计,没有渣滓HTML代码
・设计人员不需求关怀全体的"恍惚"代码
・使人惊奇地快
・更轻易重用旧的模版(对通俗的表单而说)

  FastTemplate源于一个有一样称号的Perl软件包(可以在CPAN上找到)。你可以下载PHP 的版本从它的主页(本站下载地址为:http://www.phpe.net/downloads/1.shtml)。你只需求个中的一个类的文件(class.FastTemplate.php)。

  让我起首注释一下在利用模板生成一个页面与复杂地经由过程echo或print 将页面输入之间有甚么分歧吧。
复杂地利用echo/print的办法很合适编写短的剧本,然而不克不及匡助你更好的组织和定制。模板在另外一方面给
了你创立多国言语站点的才能,只是经由过程修改一个参数。他们可以促使你更关怀你要做的。

  在入手下手编码之前不关键怕思虑。它能够会消费一些工夫,然而这些消费会跟着项目标开展对你有所报答。

  那末,若何使用FastTemplate呢?起首你需求先辈行一个复杂地挪用:

<?php $tpl=new FastTemplate ("path");
?>
传递给它一个途径,是一切你的模板文件寄存的目次。它前往一个对象,你可以用它停止参
数赋值,生成页面等等。

  FastTemplate是基于如许一种假定:一个很大的页面是由良多小的局部构成的。每个局部有一个独一
的名字。最小的局部是赋值给如许有着独一名字的一段正常的文本字符串。这个可以经由过程 <?php
$tpl->assign(NAME, "text");
?>
来完成。如今,假如你的一个模板包括{NAME},FastTemplate 就晓得你
的意图了。

  别的,FastTemplate需求晓得你想若何挪用你的模板。你需求经由过程传递一个相干数组(associative
array)给 <?php $tpl->define(); ?>
来给它一个提醒。
<?php
$tpl->define(array(foo => "foo.tpl",
bar => "bar.tpl"));
?>
  这些赋值将分离给foo和bar以分歧的文件(名为foo.tpl和bar.tpl)。

  如今你想让FastTemplate交换在模板foo中的一切{MACROS}为响应的值。经由过程收回号令

<?php
$tpl->parse(PAGECONTENT, "foo");
?>
来完成。 这个号令将把模板"foo"的内容赋给PAGECONTENT。   固然,咱们还没有做完,由于模板bar中为次要的页面界说,FastTemplate需求交换个中的
{PAGECONTENT}宏。咱们也需求给PAGETITLE赋值,以下所做: <?php
$tpl->assign(PAGETITLE, "FooBar test");
$tpl->parse(MAIN, "bar");
?>
  轻易吧,不是吗?咱们如今只需求把它输入: <?php
$tpl->FastPrint(MAIN);
?>
  上面三个文件显示了实践实习中的更多的细节描写。我不晓得在实际生涯了离了这个手艺应若何生涯 --
你的设计者会乐意,你的老板会浅笑,由于你可以在更短的工夫内做更多的工作。

bar.tpl <!-- bar.tpl -->
<HTML>
<HEAD><TITLE>Feature world - {PAGETITLE}</TITLE></HEAD>
<BODY BGCOLOR=BLACK TEXT=WHITE>
<H1>{PAGETITLE}</H1>
{PAGECONTENT}
</BODY>
</HTML>
foo.tpl <!-- foo.tpl -->
很分明示甚么都没做。请看{NAME}.
demo.php3 <?php
include "class.FastTemplate.php3";

$tpl = new FastTemplate( ".");
$tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"));

$tpl->assign(NAME, "me");
$tpl->assign(PAGETITLE, "Welcome!");

$tpl->parse(PAGECONTENT, "foo");
$tpl->parse(MAIN, "bar");

$tpl->FastPrint(MAIN);
?>

创立全部表格
  我也写了一个短的例子,用来演示若何经由过程单行模板来生成全部表格。它很无效,由于你依然不需求直
接修正HTML文档。

  咱们增添一个模板的内容到一个已界说过的独一定名的前面来创立HTML表格。这个可以经由过程在挪用
$tpl->parse()时,在模板名前加上一个"."来完成。 <?php
// 将模板foo的内容赋给TPL1
$tpl->parse(TPL1, "foo");

// 在TPL1后附上模板bar的内容
$tpl->parse(TPL1, ".bar");
?>

page.tpl

<HTML>
<HEAD><TITLE>Feature world - {PAGE_TITLE}</TITLE></HEAD>
<BODY BGCOLOR=BLACK TEXT=WHITE>
<H1>{PAGE_TITLE}</H1>
{PAGE_CONTENT}
</BODY>
</HTML>

table.tpl

<TABLE>
<TR> <TH>name</TH> <TH>size</TH> </TR>
{TABLE_ROWS}
</TABLE>

table_row.tpl

<TR>
<TD>{FILENAME}</TD>
<TD>{FILESIZE}</TD>
</TR>

yad.php3

<?php
include "class.FastTemplate.php3";

function InitializeTemplates() {
global $tpl;

$tpl = new FastTemplate( ".");
$tpl->define( array( page => "page.tpl",
table => "table.tpl",
table_row => "table_row.tpl" ) );
}

function ReadCurrentDirectory() {
global $tpl;

$handle = opendir( ".");
while($filename = readdir($handle)) {
$tpl->assign(FILENAME, $filename);
$tpl->assign(FILESIZE, filesize($filename));
$tpl->parse(TABLE_ROWS, ".table_row");
}
closedir($handle);
$tpl->parse(PAGE_CONTENT, "table");
}

function PrintPage($title) {
global $tpl;

$tpl->assign(PAGE_TITLE, $title);
$tpl->parse(FINAL, "page");
$tpl->FastPrint(FINAL);
}

InitializeTemplates();
ReadCurrentDirectory();
Printpage( "Yet Another Demo");
?>

速度会商

  "Ok," 你能够会说,"一切都太好了。然而它不会影响我的网站的速度吗?"

  不,你的网站能够变得更快。一个复杂的缘由就是:由于你作为一个编程人员关怀的是设计你的使用和编写代码,你的代码将会更无效率,处置不异的义务更轻易和更疾速。所以,你能够会在下面列出的为何思索利用FastTemplate在你的项目中的缘由列表中增添另外一层次由。

  假如你只是想转换一个已存在的web站点,功能上的胜利能够不会被注重到。我建议在PHP中利用正则表达式缓冲,它将对这类情形有所匡助。由于FastTemplate对每个宏都利用正则表达式,每个正则表达式将被只编译一次而且速度上的影响可以疏忽不计。
  应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^
只想知道 该用户已被删除
沙发
 楼主| 发表于 2015-2-4 06:57:30 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
柔情似水 该用户已被删除
板凳
发表于 2015-2-6 00:14:22 | 只看该作者
实践是检验自己会不会的真理。
深爱那片海 该用户已被删除
地板
发表于 2015-2-14 13:17:10 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
蒙在股里 该用户已被删除
5#
发表于 2015-2-28 04:11:09 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-3-3 15:40:33 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
海妖 该用户已被删除
7#
发表于 2015-3-11 11:35:20 | 只看该作者
爱上php,他也会爱上你。
莫相离 该用户已被删除
8#
发表于 2015-3-16 13:33:47 | 只看该作者
做为1门年轻的语言,php一直很努力。
爱飞 该用户已被删除
9#
发表于 2015-3-22 23:10:33 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
10#
发表于 2015-4-11 05:21:15 | 只看该作者
当然这种网站的会员费就几十块钱。
谁可相欹 该用户已被删除
11#
发表于 2015-4-15 19:12:14 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
第二个灵魂 该用户已被删除
12#
发表于 2015-4-22 02:08:42 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
再见西城 该用户已被删除
13#
发表于 2015-4-24 13:19:23 | 只看该作者
做为1门年轻的语言,php一直很努力。
小妖女 该用户已被删除
14#
发表于 2015-4-26 17:10:42 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
透明 该用户已被删除
15#
发表于 2015-6-18 05:01:56 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
简单生活 该用户已被删除
16#
发表于 2015-6-30 22:11:31 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
分手快乐 该用户已被删除
17#
发表于 2015-7-8 22:28:54 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
小魔女 该用户已被删除
18#
发表于 2015-7-9 02:32:09 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
不帅 该用户已被删除
19#
发表于 2015-7-10 14:56:43 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 02:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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