有人可以告诉我为什么我不能按如下方式写课
<?php
class Foo
{
?>
<?php
function bar() {
print "bar";
}
}
?>
我认为它与
相同<?php
class Foo
{
function bar() {
print "bar";
}
}
?>
答案 0 :(得分:8)
我想这是因为(quoting 指令分离部分的手册):
PHP代码块的结束标记 自动暗示分号
这意味着您的代码:
<?php
class Foo
{
?>
<?php
function bar() {
print "bar";
}
}
?>
与:
相同<?php
class Foo
{;
function bar() {
print "bar";
}
}
?>
这解释了你得到的错误:
Parse error: syntax error, unexpected ';', expecting T_FUNCTION
编辑:多想一想,我觉得这很奇怪,因为我经常在我的模板文件中使用这样的东西:
<?php if (...) : ?>
blah
blah
<?php endif ; ?>
所以我尝试了这个:
<?php
if (true)
{
?>
<?php
echo "Hello, World!";
}
?>
它完美无缺。好...
现在,让我们尝试添加;
,就像?>
应该做的那样:
<?php
if (true)
{;
echo "Hello, World!";
}
?>
这也正常,我得到以下输出:
Hello, World!
并且,如果改变条件,只是为了确定:
<?php
if (false)
{;
echo "Hello, World!";
}
?>
没有输出,也没有错误。
考虑到我之前引用的句子,这并不是那么令人惊讶......但是,无论如何,我仍感到惊讶^^
答案 1 :(得分:2)
?>...<?
在语法上是一个语句,如“echo”或“return”,因此第一个与
<?php
class Foo
{
echo "";
function bar() {
print "bar";
}
}
是不允许的