有没有理由认为这被认为是有效的PHP:
<?php
class someClass {
function someFunction() {
?> <?php
}
}
...但这会产生语法错误:
<?php
class someClass {
?> <?php
function someFunction() {
}
}
第二个例子给出的语法错误是:
Parse error: parse error, expecting `"function (T_FUNCTION)"' in foo.php on line 4
换句话说,PHP解析器可以在函数内部使用PHP开始/结束标记,但不在类中但在函数外部,我想知道原因。
答案 0 :(得分:2)
?> <?php
与echo ' ';
相当*,这在那里毫无意义。
*如果您对如何等效产生了好奇,则为:
生成操作码<?php
echo 'foo';
?>bar<?php
echo 'baz';
是:
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > ECHO 'foo'
3 1 ECHO 'bar'
4 2 ECHO 'baz'
3 > RETURN 1
答案 1 :(得分:0)
根据我对php的理解,当你使用结束标记时,这告诉php开始输出缓冲(准备输出数据)。在定义类时,您要定义一组变量和/或函数,不输出数据。但是,当您在类中定义函数时,您基本上是在说 - 当调用此函数时,在该函数中执行x任务,其中可能包括输出数据。