在对象作用域外使用 $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中文网其他相关文章!