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

PHP の致命的なエラー「オブジェクト コンテキストにないときに $this を使用しています」が表示されるのはなぜですか?

DDD
リリース: 2024-12-15 02:56:17
オリジナル
720 人が閲覧しました

Why Am I Getting a PHP Fatal Error:

オブジェクト スコープ外での $this の使用: PHP 致命的エラーの説明

PHP 致命的エラー「オブジェクト コンテキスト内にない $this の使用」が発生する非オブジェクト コンテキスト内で $this キーワードにアクセスしようとしたとき。 $this キーワードは現在のオブジェクト インスタンスを表し、オブジェクトのメソッドまたはプロパティのスコープ内でのみ使用できます。

質問に示されている、class.php ファイル内でエラーが発生するシナリオ例を考えてみましょう。エラーの原因となる行は次のとおりです。

$this->foo = $foo;
ログイン後にコピー

この行は、グローバル変数 $foo の値を現在のオブジェクトの foo プロパティに割り当てます。ただし、この行が存在する __construct() メソッドがオブジェクト コンテキスト内で実行されないため、エラーが発生します。

このエラーを回避するには、$this がコンテキスト内でのみ使用されるようにすることが重要です。オブジェクトのメソッドまたはプロパティの。示されている例では、次のアプローチでエラーが解決されます。

class foobar {

    public $foo;

    public function __construct($foo) {
        $this->foo = $foo; // Now within object context
    }

    public function foobarfunc() {
        return $this->foo();
    }

    public function foo() {
        return $this->foo;
    }
}
ログイン後にコピー

ここで、__construct() メソッドは、オブジェクトの foo プロパティになるパラメーター $foo を受け取ります。さらに、 foobarfunc() メソッドは $this->foo を使用してオブジェクトの foo プロパティを正しく参照します。

オブジェクトを作成せずに foobarfunc() メソッドを呼び出すことが目的の場合は、代わりに静的メソッドを使用する必要があります。例:

class foobar {

    public static $foo; // Static variable

    public static function foobarfunc() {
        return self::$foo; // Reference static variable
    }
}
ログイン後にコピー

この場合、クラスを使用して foobarfunc() メソッドを直接呼び出すことができます。オブジェクトインスタンスを必要としない名前。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート