php中heredoc与nowdoc的优点/不便之处
作为一个新手,与太多的嵌套代码相比,我被建议最好使用heredoc(参见php代码中的意外T_ELSE)。
但是我无法理解heredoc和nowdoc之间是否存在显着差异。
与另一个相比,heredoc和nowdoc的优势是什么,这对新手来说很重要(即不是很小的优势,但对我来说很重要)。
作为一个新手,与太多的嵌套代码相比,我被建议最好使用heredoc(参见php代码中的意外T_ELSE)。
但是我无法理解heredoc和nowdoc之间是否存在显着差异。
与另一个相比,heredoc和nowdoc的优势是什么,这对新手来说很重要(即不是很小的优势,但对我来说很重要)。
Nowdocs之于单引号字符串,就像heredocs之于双引号字符串一样。nowdoc 的指定方式与 heredoc 类似,但在 nowdoc 中不进行任何解析。该构造非常适合嵌入PHP代码或其他大型文本块,而无需转义。
http://php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc
换句话说:
$foo = 'bar';
$here = <<<HERE
I'm here, $foo !
HERE;
$now = <<<'NOW'
I'm now, $foo !
NOW;
$here
是“我在这里,酒吧!”,而“我现在,$foo!”$now
如果您不需要变量插值,但需要特殊字符(如字符串内部),则 Nowdocs 更易于使用。就这样。$
遗传
1.heredocs 文本的行为就像一个双引号字符串,没有双引号。
2. heredoc 中的引号不需要转义,但转义码 \n 换行符、\r 回车符、
\t 水平制表符、\v 垂直制表符、\e 转义键、\f 换行符、\反斜杠、\$ 美元符号,\“ 双引号仍然可以使用。变量是扩展的,但是在表示遗传内复杂变量时,必须像表达字符串一样小心。
例:
$myname='Tikku';
$heredoc_exmaple= <<<HEREDOC
\\n ,\\r ,\t ,\r ,\\v ,\\e ,\f ,\\ , \ ,$89 ,$ , $myname , ' , \$myname , \" ,\'
HEREDOC;
echo $heredoc_exmaple;
//OUTPUT \n ,\r , , ,\v ,\e , ,\ , \ ,$89 ,$ , Tikku , ' , $myname , \" ,\'
现在docs
1.nowdocs 文本的行为就像一个单引号字符串,没有单引号。
2. nowdocs 中的引号不需要转义。变量不会在其中展开。nowdocs的优点是嵌入PHP代码和转义代码而无需转义。
例:
$myname='Tikku';
$nowdoc_exmaple= <<<'NOWDOC'
\\n ,\\r ,\t ,\r ,\\v ,\\e ,\f ,\\ , \ ,$89 ,$ , $myname , ' , \$myname , \" ,\'
NOWDOC;
echo $nowdoc_exmaple;
//OUTPUT \\n ,\\r ,\t ,\r ,\\v ,\\e ,\f ,\\ , \ ,$89 ,$ , $myname , ' , \$myname , \" ,\'
语法:nowdoc使用与heredocs相同的<<<序列进行标识,但后面的标识符括在单引号中,例如<<<'NOWDOC'。遗传标识符的所有规则也适用于 nowdoc 标识符,特别是那些关于关闭标识符外观的规则。