一、heredoc结构及用法
二、nowdoc结构及用法
在 PHP 5.3.0 及其以后的版本中增加了nowdoc结构,其用法和heredoc相同,只是其中的内容绝对不会进行任何的转义和解释,是什么内容就是什么内容,不会解析PHP相关的内容。
不同的是Nowdoc 结构是类似于单引号字符串的。nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的 结构是用来声明大段的不用解析的文本类似,nowdoc 结构也有相同的特征。
一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。
三、总结:
1、 heredoc是从PHP4.0开始引进的,而nowdoc语法则需要5.3版本。
2、heredoc使用 <<< EOT 的标示符,而nowdoc使用 <<< 'EOT' 这样的标示符。
3、heredoc是动态的 ,nowdoc是静态的。
4、heredoc类似多行的双引号, newdoc类似多行的单引号
5、heredoc是一种专门处理大段字符串的通用处理方案,而nowdoc是php为了弥补动态实现“heredoc”的效率问题而实现的“高效率”的静态版本。
6、最后强调一下,因为PHP5.3才引进的nowdoc语法,很多云托管坏境很有可能不支持导致程序崩溃。而且heredoc包含了nowdoc的功能,所以个人建议还是使用heredoc比较好些。
Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义。其结构中的变量将被替换,但在 heredoc 结构中含有复杂的变量时要格外小心。其对格式化输出内容时,比较有用 。具体其有以下特点:
1、开始标记和结束标记使用相同的字符串,通常以大写字母来写。
2、开始标记后不能出现空格或多余的字符。
3、结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
4、位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。
5. 在heredoc中,变量不需要用连接符.或,来拼接 。
heredoc中的PHP变量建议使用{$name->change()} 大括号括起来,这样可以避免一定的歧义,如果要原样输出可以使用传说中的转义字符 \ ,转义字符本身可以使用转义字符进行输出,即 \ 这种表示方法,大括号之类的这些都需要转义输出。示例如下:
$this->html = <<<EOT
<div id="master-carousel" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#master-carousel" data-slide-to="0" class="active"></li>
<li data-target="#master-carousel" data-slide-to="1"></li>
<li data-target="#master-carousel" data-slide-to="2"></li>
</ol>
<div class="carousel-inner" role="listbox">
{$str}
</div>
<a class="left carousel-control" href="#master-carousel" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#master-carousel" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right"></span>
<span class="sr-only">Next</span>
</a>
</div>
<style>
.carousel-control{
display:none;
}
.carousel-indicators li {
background-color:rgba(86, 61, 24, 0);
border: 1px solid #563d7c;
}
.carousel-indicators li.active {
background-color: #FFF;
}
</style>
<script>
$('#master-carousel').carousel({
//interval:3000,
interval:false,
wrap:true
});
</script>
EOT;
二、nowdoc结构及用法
在 PHP 5.3.0 及其以后的版本中增加了nowdoc结构,其用法和heredoc相同,只是其中的内容绝对不会进行任何的转义和解释,是什么内容就是什么内容,不会解析PHP相关的内容。
不同的是Nowdoc 结构是类似于单引号字符串的。nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的 结构是用来声明大段的不用解析的文本类似,nowdoc 结构也有相同的特征。
一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。
三、总结:
1、 heredoc是从PHP4.0开始引进的,而nowdoc语法则需要5.3版本。
2、heredoc使用 <<< EOT 的标示符,而nowdoc使用 <<< 'EOT' 这样的标示符。
3、heredoc是动态的 ,nowdoc是静态的。
4、heredoc类似多行的双引号, newdoc类似多行的单引号
5、heredoc是一种专门处理大段字符串的通用处理方案,而nowdoc是php为了弥补动态实现“heredoc”的效率问题而实现的“高效率”的静态版本。
6、最后强调一下,因为PHP5.3才引进的nowdoc语法,很多云托管坏境很有可能不支持导致程序崩溃。而且heredoc包含了nowdoc的功能,所以个人建议还是使用heredoc比较好些。