Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Saya Mendapat Ralat Maut PHP 'Menggunakan $ini Apabila Tidak Dalam Konteks Objek'?

Mengapa Saya Mendapat Ralat Maut PHP 'Menggunakan $ini Apabila Tidak Dalam Konteks Objek'?

Barbara Streisand
Lepaskan: 2024-12-29 04:34:09
asal
995 orang telah melayarinya

Why Am I Getting a

Ralat Maut PHP: Menggunakan $this Apabila Tiada dalam Konteks Objek

Masalah:

Apabila cuba mengakses $this pembolehubah dalam kaedah bukan statik kelas dalam PHP, ralat berikut berlaku: "Menggunakan $ini apabila tidak dalam konteks objek."

Jawapan:

Ralat ini timbul apabila cuba mengakses pembolehubah $this di luar tika objek. Pembolehubah $this merujuk kepada objek semasa dan hanya boleh digunakan dalam konteks objek yang dibuat seketika.

Penyelesaian:

Untuk menyelesaikan ralat ini, nyatakan objek daripada kelas dan akses kaedah melalui contoh objek. Sebagai contoh:

$object = new MyClass();
$object->myMethod();
Salin selepas log masuk

Sebagai alternatif, jika kaedah statik, anda boleh mengaksesnya secara langsung menggunakan nama kelas, tanpa membuat seketika objek:

MyClass::staticMethod();
Salin selepas log masuk

Contoh:

Dalam fail class.php anda, pastikan kaedah foobarfunc() tidak ditakrifkan sebagai kaedah statik. Jika ia tidak statik, anda mesti membuat instantiate objek kelas foobar sebelum mengakses kaedah:

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

Jika anda berhasrat untuk mencipta kaedah statik, pastikan kaedah itu diisytiharkan sebagai statik dan $ pembolehubah foo diisytiharkan sebagai statik:

class foobar {

    public static $foo;

    public static function foobarfunc() {
        return self::$foo;
    }

}

foobar::foobarfunc();
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Maut PHP 'Menggunakan $ini Apabila Tidak Dalam Konteks Objek'?. 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