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
Barbara Streisandasal
2024-12-25 11:02:41201semak imbas

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;
    }

    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();

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!

Kenyataan:
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