php heredoc 与 nowdoc

PHP heredoc 与 nowdoc

 

heredoc 结构

heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串本身,最后要用前面定义的标识符作为结束标志。

 

[php] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <?php  
  2. $content = <<<FDIPZONE  
  3. <html>  
  4. <head>  
  5. <title>test</title>  
  6. </head>  
  7. <body>  
  8. <p><img src="http://www.csdn.net/css/logo.png"></p>  
  9. <p><a href='http://blog.csdn.net/fdipzone'>blog</a></p>  
  10. </body>  
  11. </html>  
  12. FDIPZONE;  
  13.   
  14. echo $content;  
  15. ?>  

 

heredoc 结构不能用来初始化类的属性。自 PHP 5.3 起,此限制仅对 heredoc 包含变量时有效。下例将会出错。

 

[php] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <?php  
  2. class test{  
  3.   
  4. public $var = '123';  
  5.   
  6. public $a = <<<FDIPZONE  
  7. $var  
  8. FDIPZONE;  
  9.   
  10. }  
  11.   
  12. $obj = new test();  
  13. echo $obj->a;  
  14. ?>  

 

heredoc结构中,变量将被替换,但方法不会。含有复杂的变量时要格外小心。

 

[php] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <?php  
  2. $var = '123';  
  3. $content = <<<FDIPZONE  
  4. $var time();  
  5. FDIPZONE;  
  6.   
  7. echo $content; // 123 time();  
  8. ?>  


nowdoc 结构

 

nowdoc 句法结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入php代码或其它大段文本而无需对其中的特殊字符进行转义。

nowdoc 与 heredoc 结构一样的标记 <<<,但跟在后面的标识符必须用单引号括起来,即<<<'EOF'。 heredoc 结构的所有规则同样适用于nowdoc结构,尤其是结束标识符的规则。nowdoc是在php5.3之后才加入的。

 

[php] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <?php  
  2. $var = '123';  
  3. $content = <<<'FDIPZONE'  
  4. $var time();  
  5. FDIPZONE;  
  6.   
  7. echo $content; // $var time(); $var没有被替换  
  8. ?>  

 

nowdoc 结构可以用在任意的静态数据环境中,最典型的示例是用来初始化类的属性或常量。下例将不会出错,可以对比heredoc的例子。

 

[php] view plain copy
 
 在CODE上查看代码片派生到我的代码片
    1. <?php  
    2. class test{  
    3.   
    4. public $a = <<<'FDIPZONE'  
    5. $var  
    6. FDIPZONE;  
    7.   
    8. }  
    9.   
    10. $obj = new test();  
    11. echo $obj->a;  
    12. ?>  
posted @ 2016-12-25 11:56  天涯海角路  阅读(107)  评论(0)    收藏  举报