类定义问题

时间:2010-03-26 16:43:37

标签: php class

有人可以告诉我为什么我不能按如下方式写课

<?php
class Foo 
{
?>
<?php
       function bar() {
           print "bar";
       }
}
?>

我认为它与

相同
<?php
class Foo 
{
       function bar() {
           print "bar";
       }
}
?>

2 个答案:

答案 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";
   }
}

是不允许的