PHP定界符 <<< EOT

花括号定界符

${$a[1]} 这里$a[1]是一个变量;

${$a}[1] 这里$a是一个变量

花括号定界符决定了变量名字的起始。这样在EOT定界符里面就不会和其他相邻的汉字和字母混淆了

比如

echo "${str}_2010";

如果没有定界符

就变成了

echo "$str_2010";

打印变量$str_2010了

 

EOT定界符

<?php

$name="cheng";

print<<<eof

hello($name)

eof;

?>

看起来很简单,但是其中有许多地方需要注意:
1.在<<<之后的字符Eof是自己定义的,随便什么都是可以的,但是结尾处的字符一定要和他一样,他们是成对出现的,就像{}这样的——这是最基本的;

2.结尾的一行(如上例的Eof;),一定要另起一行,并且改行除了Eof;这个定界符结尾标识之外不能有任何其他字符,前后都不能有,包括空格。如果在本行最前或者最后出现空格,制表符的话,你会收到一个这样的错误信息:Parse error: parse error, unexpected $end in……,提示你语法错误;

3.如果在定界符中间出现有PHP的变量,你只需要像在其它字符串中输出一样写就行了.

变量$name之所以要用{}括起来是要告诉PHP解析器这是一个PHP变量,其实不用也是可以的,但是有可能会产生歧义,例如你的变量后面刚好不是一字母或者特殊符号什么的会怎么样呢?

4.标识符也必须遵循 PHP 中其它任何标签的命名规则:只能包含字母数字下划线,而且必须以下划线或非数字字符开始。 
  警告 
  结束标识符所在的行不能包含任何其它字符,可能除了一个分号(;)之外。这尤其意味着该标识符不能被缩进,而且在分号之前和之后都不能有任何空格或制表符。同样重要的是要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符。例如在 Macintosh 系统中是  。 
  如果破坏了这条规则使得结束标识符不“干净”,则它不会被视为结束标识符,PHP 将继续寻找下去。如果在这种情况下找不到合适的结束标识符,将会导致一个在脚本最后一行出现的语法错误。 
  不能用定界符语法初始化类成员。用其它字符串语法替代。 例子 11-3. 非法的例子
  <?php
  class foo {
  public $bar = <<<EOT
  bar
  EOT;
  }
  ?> 
  定界符文本表现的就和双引号字符串一样,只是没有双引号。这意味着在定界符文本中不需要转义引号,不过仍然可以用以上列出来的转义代码。变量会被展开,但当在定界符文本中表达复杂变量时和字符串一样同样也要注意。 例子 11-4. 定界符字符串例子
  <?php
  $str = <<<EOD
  Example of string
  spanning multiple lines
  using heredoc syntax.
  EOD;
  /* More complex example, with variables. */
  class foo
  {
  var $foo;
  var $bar;
  function foo()
  {
  $this->foo = 'Foo';
  $this->bar = array('Bar1', 'Bar2', 'Bar3');
  }
  }
  $foo = new foo();
  $name = 'MyName';
  echo <<<EOT
  My name is "$name". I am printing some $foo->foo.
  Now, I am printing some {$foo->bar[1]}.
  This should print a capital 'A': x41
  EOT;
  ?>

by 雪洁 2011-09-23 10:43:30 5823 views

1 Comments

游客 2012-08-03 11:26:58
手册上讲的很清楚了
我来说几句

相关文章