php heredoc 赋值,php中heredoc的使用方法

php程序界有很多种模板技术和方法;但使用起来大多不太方便。 我经过思考和测试,发明了一种简单而巧妙的方法。 我的目标是:把html从php中分离出来,并且html中不包含php控制程序。 在php4中,提供了print HTML 功能。举例如下: $data=这里是内容; print H

php程序界有很多种模板技术和方法;但使用起来大多不太方便。

我经过思考和测试,发明了一种简单而巧妙的方法。

我的目标是:把html从php中分离出来,并且html中不包含php控制程序。

在php4中,提供了print<<< HTML 功能。举例如下:

$data="这里是内容";

print<<< HTML

$data

HTML;

?>

输出:这里是内容。

另外一方面,php中有函数eval()。它能够执行php代码。我们就结合上述

知识来建立一个通用的函数getTpl().如下:

下面是demo.php

function getTpl($tplname,$EXT='.htm')

{

extract($GLOBALS);

$path=$tplname.$EXT;

eval_r("print<<< EOT\n".readfn($path)."\nEOT;\n");

}

function readfn($fn)

{

$fp=fopen($fn,"rb");

return fread($fp,filesize($fn));

fclose($fp);

}

$title='这是标题';

$data='这里是内容';

getTpl('demo');

?>

下面是demo.htm

$title

$title

$data

经过这样的处理后,在demo.htm中只有php要替换的变量,而没有任何其他php的多余代码了。

这样以来,外观和程序逻辑就得以完全分离,为网站的修改和后期维护提供了方便之门!

注:以上方法分离了php和html,代表了显示和逻辑的分离。但是以失去复杂控制为代价的。

定界符

另一种给字符串定界的方法使用定界符语法(“<<

警告

很重要的一点必须指出,结束标识符所在的行不能包含任何其它字符,可能除了一个分号(;)之外。这尤其意味着该标识符不能被缩进,而且在分号之前和之后都不能有任何空格或制表符。同样重要的是要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符。例如在 Macintosh 系统中是 \r。

如果破坏了这条规则使得结束标识符不“干净”,则它不会被视为结束标识符,PHP 将继续寻找下去。如果在这种情况下找不到合适的结束标识符,将会导致一个在脚本最后一行出现的语法错误。

不能用定界符语法初始化类成员。用其它字符串语法替代。 例子 11-3. 非法的例子

bar

EOT;

}

?>

定界符文本表现的就和双引号字符串一样,只是没有双引号。这意味着在定界符文本中不需要转义引号,不过仍然可以用以上列出来的转义代码。变量会被展开,但当在定界符文本中表达复杂变量时和字符串一样同样也要注意。例子 11-4. 定界符字符串例子

Example of string

spanning multiple lines

using heredoc syntax.

EOD;

class foo

{

var $foo;

var $bar;

function foo()

{

$this->foo = 'Foo';

$this->bar = array('Bar1', 'Bar2', 'Bar3');

}

}

$foo = new foo();

$name = 'MyName';

echo <foo.

Now, I am printing some {$foo->bar[1]}.

This should print a capital 'A': \x41

EOT;

?>

实例:

一、目录规划

phpLearn

|----Templates

----index.html

|----index.php

二、PHP文件

index.php中给变量赋值,同时包含模板

$userNum1 = '123';

include ('Templates/index.html'); //包含模板

?>

三、模板文件

index.hhtml

-----------------------

$userNum1 //使用变量

总结:

1、echo <<

//在此处可以有HTML元素

2、html模板内目录 以php文件所在的目录(路径) 为准。

3、html模板与php分离,可以不使用$_GET或则$_POST方法。直接使用名称作为变量

以上为使用heredoc模板的基本思路与方法总结

使用php模板才能真正使自己从面向过程的编程渐渐转向面向对象的编程过程中。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值