1

我有一个类如下所示:

<?php 
class theGodFather {
    public function do() {
        echo "the movie is nice";
    }
}

$obj = new theGodFather;
echo $theGodFather->do;

运行时出现错误:语法错误,意外的 T_DO,期望第 3 行 /Applications/XAMPP/xamppfiles/htdocs/test/classes.php 中的 T_STRING

我可能做错了什么?

4

4 回答 4

3

您不能使用关键字作为函数/类/方法和常量的名称,do是其中之一。但是,您可以将它们用作变量名。

于 2012-07-29T13:23:55.440 回答
3

"do" 是一个关键字(可以在 do while 循环中使用)。此外,您正在回显一个不返回任何内容但在其中回显某些内容的函数。

将“do”函数重命名为“echoFunction”或您选择的任何名称,然后更改:

$obj = new theGodFather;
echo $theGodFather->do;

至:

$obj = new theGodFather;
$obj->echoFunction();

你不会调用 $theGodFather->echoFunction 的原因是因为 theGodFather 是一个类定义,而 $obj 是该类的一个实际实例。您可以在 PHP 中使用静态方法,无需创建新实例即可调用这些方法。

于 2012-07-29T13:28:26.053 回答
2

你在类中使用do函数“do”是php的关键字,你不能在函数或类中使用关键字

尝试这个

class theGodFather 
{
    // property declaration
    public $var = 'a default value';

    // method declaration
    public function displayVar() {
        echo 'a default value';
    }
}

$obj = new theGodFather();

//print_r($obj);
echo $obj->displayVar();
于 2012-07-29T13:28:13.803 回答
1

do是一个关键字,因此解释器变得非常非常困惑。:( 选择一个不同的函数名就可以了!

于 2012-07-29T13:23:05.967 回答