Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Mendapat Ralat Maut PHP: 'Menggunakan $this apabila tidak dalam konteks objek'?
Menggunakan $this Outside Object Scope: PHP Fatal Error Explained
Ralat maut PHP "Menggunakan $this apabila tidak dalam konteks objek" berlaku apabila cuba mengakses kata kunci $this dalam konteks bukan objek. Kata kunci $this mewakili contoh objek semasa dan hanya boleh digunakan dalam skop kaedah atau harta objek.
Pertimbangkan contoh senario yang disediakan dalam soalan, di mana ralat berlaku dalam fail class.php. Garis yang menyebabkan ralat ialah:
$this->foo = $foo;
Baris ini memberikan nilai pembolehubah global $foo kepada sifat foo objek semasa. Walau bagaimanapun, ralat dicetuskan kerana kaedah __construct(), di mana baris ini berada, tidak dilaksanakan dalam konteks objek.
Untuk mengelakkan ralat ini, adalah penting untuk memastikan bahawa $this digunakan hanya dalam konteks kaedah atau sifat objek. Dalam contoh yang disediakan, pendekatan berikut akan menyelesaikan ralat:
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; } }
Sekarang, kaedah __construct() mengambil parameter $foo yang menjadi harta foo objek. Selain itu, kaedah foobarfunc() merujuk dengan betul sifat foo objek menggunakan $this->foo.
Jika niatnya adalah untuk menggunakan kaedah foobarfunc() tanpa mencipta objek, kaedah statik harus digunakan sebaliknya , seperti:
class foobar { public static $foo; // Static variable public static function foobarfunc() { return self::$foo; // Reference static variable } }
Dalam kes ini, kaedah foobarfunc() boleh dipanggil terus menggunakan nama kelas, tanpa memerlukan contoh objek.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Maut PHP: 'Menggunakan $this apabila tidak dalam konteks objek'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!