购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.11 HereDoc与NowDoc

PHP的HereDoc以Linux系统的“原型文档”(here-document)语法为基础,它允许开发者在脚本中嵌入一段文本内容,如邮件模板、短信模板、HTML/JavaScript脚本等。

它是一种面向字符行的引用,所以定界符是针对行而不是字符,起始定界符是当前行,结束定界符是一个指定字符的行。如代码清单1-16所示:

代码清单1-16 HereDoc之声明


<php
echo<<<THIS_HEREDOC
    PHP stands for "PHP Hypertext Preprocessor".
    The acronym "PHP" is therefore usually referred to as a recursive acronym because thelong form contains the acronym itself.
THIS_HEREDOC
   >

可以看到这里以<<<THIS_HEREDOC开头,以THIS_HEREDOC结束,表示引用结束。

在<<<后面的名字可以是任何你喜欢的名称,比如可以用“HELLO”定义HereDoc开始,然后末尾就以“HELLO”表示HereDoc语句的结束。

在HereDoc中可以直接引用PHP变量(前提是该变量已经定义),HereDoc会解释该变量,直接显示该变量的值,为避免与其他文字混淆,可以用花括号将该变量括起来。如代码清单1-17所示:

代码清单1-17 在HereDoc中引用PHP变量


<php
$output = "LAMP高性能开发"
$content = <<<THIS_HEREDOC实践{$output}
THIS_HEREDOC
   >

注意,在使用HereDoc时,结束符之前的文字要与上面文字段落自然换行,不要用空格或TAB字符进行缩进操作,否则PHP会提示解析错误。

如果想在HereDoc内容中显示$打头的字符串,PHP会认为是一个变量,因为不是合法的标识会提示编译错误,需要进行转义操作。

如果我们使用PHP 5.3以上版本,就可以使用新的语法NowDoc了。它相当于HereDoc中内容都自动转义,文本中的内容包括变量都不会解析。

NowDoc源于HereDoc,语法和HereDoc相似,唯一区别是它使用单引号作为定界符,如代码清单1-18所示:

代码清单1-18 NowDoc的使用


<php
$religion = 'Hebrew'
$myString = <<'END_TEXT'
"'I am a $religion' he cries - and then - 'I fear the Lord the God of
Heaven who hath made the sea and the dry land'"
END_TEXT
echo "<pre> $myString</pre>"
   >

NowDoc对包含的文本均不做任何解析。在输出时,里面的内容都当作纯文本,无论有没有PHP变量还是特殊字符,这非常适合文本中含有代码的内容,比如想在脚本中显示一段PHP源码、动态SQL语句等具有很实用的价值。 4uTVhwxRvsxOjcAYKuy4ukxvOr/sYPiDAvA1BGsKGwUV/rnXMBoQ455en6fEPx9h

点击中间区域
呼出菜单
上一章
目录
下一章
×