在物件作用域外使用$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中文網其他相關文章!