Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Saya Mendapat 'Ralat maut: Menggunakan $ini apabila tidak dalam konteks objek' dalam PHP?

Mengapa Saya Mendapat 'Ralat maut: Menggunakan $ini apabila tidak dalam konteks objek' dalam PHP?

Barbara Streisand
Lepaskan: 2024-12-25 11:02:41
asal
198 orang telah melayarinya

Why Am I Getting the

Menggunakan $this dalam Kelas PHP

Ralat PHP "Ralat maut: Menggunakan $this apabila tidak dalam konteks objek" berlaku apabila cuba untuk akses kata kunci $ini di luar kaedah kelas yang memerlukan objek instance.

Penjelasan

Dalam PHP, kata kunci $this merujuk kepada tika objek semasa dalam kaedah kelas. Percubaan untuk menggunakan $this di luar konteks objek, seperti dalam kaedah statik atau skop global, akan mengakibatkan ralat yang dinyatakan di atas.

Contoh

Kod yang disediakan menunjukkan bagaimana ralat boleh berlaku. Dalam class.php, kaedah foobarfunc() tersilap cuba mengakses $this->foo(), yang hanya sah dalam contoh objek.

Penyelesaian

Untuk menyelesaikan ralat, anda boleh sama ada:

  • Buat kaedah sebagai kaedah statik:

    static public function foobarfunc() {
      return self::$foo;
    }
    Salin selepas log masuk

    Ini membolehkan anda mengakses kaedah menggunakan nama kelas dan bukannya contoh objek, cth., foobar::foobarfunc().

  • Buat contoh objek dan panggil kaedah foobarfunc() pada itu contoh:

    $foobar = new foobar;
    $result = $foobar->foobarfunc();
    Salin selepas log masuk

Ingat, kaedah statik boleh terus mengakses pembolehubah kelas dan kaedah tanpa memerlukan contoh objek, manakala kaedah bukan statik memerlukan contoh objek tertentu untuk dibuat terlebih dahulu .

Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Ralat maut: Menggunakan $ini apabila tidak dalam konteks objek' dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan