ホームページ >バックエンド開発 >PHPチュートリアル >「オブジェクト コンテキストにない場合に $this を使用する」という PHP 致命的エラーが発生するのはなぜですか?

「オブジェクト コンテキストにない場合に $this を使用する」という PHP 致命的エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-29 04:34:09997ブラウズ

Why Am I Getting a

PHP 致命的エラー: オブジェクト コンテキストにない場合の $this の使用

問題:

PHP のクラスの非静的メソッド内で $this 変数にアクセスしようとすると、次のエラーが発生します発生: "オブジェクト コンテキストにないときに $this を使用しています。"

回答:

このエラーは、オブジェクト インスタンスの外で $this 変数にアクセスしようとすると発生します。 $this 変数は現在のオブジェクトを参照し、インスタンス化されたオブジェクトのコンテキスト内でのみ使用できます。

解決策:

このエラーを解決するには、次のオブジェクトをインスタンス化します。クラスにアクセスし、オブジェクト インスタンスを通じてメソッドにアクセスします。例:

$object = new MyClass();
$object->myMethod();

また、メソッドが静的である場合は、オブジェクトをインスタンス化せずに、クラス名を使用して直接アクセスできます:

MyClass::staticMethod();

例:

class.php ファイルで、foobarfunc() メソッドが静的メソッド。静的でない場合は、メソッドにアクセスする前に foobar クラスのオブジェクトをインスタンス化する必要があります。

$foobar = new foobar();
$foobar->foobarfunc();

静的メソッドを作成する場合は、メソッドが静的として宣言されていることと、$ foo 変数は静的として宣言されています:

class foobar {

    public static $foo;

    public static function foobarfunc() {
        return self::$foo;
    }

}

foobar::foobarfunc();

以上が「オブジェクト コンテキストにない場合に $this を使用する」という PHP 致命的エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。