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」はキーワードです(do whileループで使用できます)。また、何も返さないが、その中に何かをエコーする関数をエコーし​​ています。

「do」関数の名前を「echoFunction」または任意の名前に変更してから、次のように変更します。

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

に:

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

$ objはクラスの実際のインスタンスであるのに対し、theGodFatherはクラス定義であるため、$theGodFather->echoFunctionを呼び出さない理由。新しいインスタンスを作成せずに呼び出すことができる静的メソッドをPHPに含めることができます。

于 2012-07-29T13:28:26.053 に答える
3

関数/クラス/メソッドおよび定数の名前としてキーワードを使用することはできませんdo。ただし、変数名として使用できます。

于 2012-07-29T13:23:55.440 に答える
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 に答える