类定义问题

You*_*ung 2 php class

有人可以告诉我为什么我不能写如下的课程

<?php
class Foo 
{
?>
<?php
       function bar() {
           print "bar";
       }
}
?>
Run Code Online (Sandbox Code Playgroud)

我认为它是一样的

<?php
class Foo 
{
       function bar() {
           print "bar";
       }
}
?>
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 8

我想这是因为这个(引述指令分离手册的部分):

PHP代码块的结束标记自动表示分号


这意味着你的代码:

<?php
class Foo 
{
?>
<?php
       function bar() {
           print "bar";
       }
}
?>
Run Code Online (Sandbox Code Playgroud)

是相同的 :

<?php
class Foo 
{;
   function bar() {
       print "bar";
   }
}
?>
Run Code Online (Sandbox Code Playgroud)

这解释了你得到的错误:

Parse error: syntax error, unexpected ';', expecting T_FUNCTION
Run Code Online (Sandbox Code Playgroud)



编辑:想一想它,我认为这很奇怪,考虑到我经常在我的模板文件中使用这样的东西:

<?php if (...) : ?>
    blah
    blah
<?php endif ; ?>
Run Code Online (Sandbox Code Playgroud)


所以我尝试了这个:

<?php
if (true)
{
?>
<?php
    echo "Hello, World!";
}
?>
Run Code Online (Sandbox Code Playgroud)

它完美无缺.好的......
现在,让我们尝试添加;,就像?>应该做的那样:

<?php
if (true)
{;
    echo "Hello, World!";
}
?>
Run Code Online (Sandbox Code Playgroud)

这也很好,我得到以下输出:

Hello, World!
Run Code Online (Sandbox Code Playgroud)


并且,如果改变条件,只需确定:

<?php
if (false)
{;
    echo "Hello, World!";
}
?>
Run Code Online (Sandbox Code Playgroud)

没有输出,也没有错误.


考虑到我之前引用的句子,这并不是那么令人惊讶......但是,无论如何,我仍感到惊讶^^