首页 >后端开发 >php教程 >为什么我会收到 PHP 致命错误:'不在对象上下文中时使用 $this”?

为什么我会收到 PHP 致命错误:'不在对象上下文中时使用 $this”?

DDD
DDD原创
2024-12-15 02:56:17722浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn