1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み] [Solved] PHP Fatal error: オブジェクトコンテキストでないときに$thisを使用する

2022-01-11 10:30:58

質問

コードは次のとおりです。

index.php

require_once('load.php');

load.php

require_once('class.php');

class.php :

class foobar {

    public $foo;

    public function __construct() {
        global $foo;

        $this->foo = $foo;
    }

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

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

で  class.php というエラーが発生します。

Fatal error: Using $this when not in object context in class.php on line ... (in this example it would be 11)

index.php ロードしているのは、たぶん foobarfunc() このように

foobar::foobarfunc();

にもできますが

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

解決方法は?

<ブロッククオート

私のindex.phpでは、多分このようにfoobarfunc()をロードしています。

 foobar::foobarfunc();  // Wrong, it is not static method

にもなり得ますが

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

スタティック・メソッドではないので、この方法でメソッドを呼び出すことはできません。

foobar::foobarfunc();

代わりに使用する必要があります。

foobar->foobarfunc();

しかし、静的なメソッドを作成した場合、次のようになります。

static $foo; // your top variable set as static

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

であれば、これを使うことができます。

foobar::foobarfunc();