Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah Saya Mendapat Ralat 'PHP Fatal: Menggunakan $this When Not in Object Context'?

Mengapakah Saya Mendapat Ralat 'PHP Fatal: Menggunakan $this When Not in Object Context'?

Linda Hamilton
Lepaskan: 2024-12-30 11:24:13
asal
688 orang telah melayarinya

Why Am I Getting the

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

Menghadapi ralat "Ralat maut: Menggunakan $ini apabila bukan dalam konteks objek" menunjukkan bahawa kata kunci $this yang dirujuk digunakan di luar konteks kelas. Untuk memahami perkara ini dengan lebih baik, mari kita membedah kod anda:

Dalam index.php anda, anda memerlukan fail load.php, yang seterusnya memerlukan class.php. Dalam class.php, ralat berlaku disebabkan oleh tugasan $this->foo dalam pembina.

Baris $this->foo = $foo; cuba untuk mengakses sifat foo objek semasa, tetapi tanpa membuat seketika objek, tiada $ini untuk dirujuk. Oleh itu, baris ini tidak sah di luar konteks objek.

Untuk membetulkan ralat, anda mesti membuat instantiate objek kelas foobar dan memanggil kaedahnya pada objek itu. Ini boleh dicapai melalui contoh berikut:

  1. Invokasi Kaedah Statik:

    Ubah suai kelas.php anda dengan mengisytiharkan kaedah foobarfunc sebagai statik dan mentakrifkan pembolehubah statik $foo . Ini membolehkan anda memanggil kaedah secara terus tanpa membuat instantiat objek.

  2. Invokasi Objek:

    Instantiate objek kelas foobar menggunakan $foobar = new foobar; dan kemudian panggil kaedahnya pada objek itu menggunakan $foobar->foobarfunc();.

Oleh itu, ralat timbul apabila cuba menggunakan $this di luar konteks objek. Untuk menyelesaikannya, sama ada gunakan kaedah statik tanpa rujukan $ini atau nyatakan objek dan panggil kaedah padanya.

Atas ialah kandungan terperinci Mengapakah Saya Mendapat Ralat 'PHP Fatal: Menggunakan $this When Not in Object Context'?. 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