Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Memanggil Kaedah Bukan Statik Secara Statik dalam PHP Menghasilkan Ralat?

Mengapa Memanggil Kaedah Bukan Statik Secara Statik dalam PHP Menghasilkan Ralat?

Susan Sarandon
Lepaskan: 2024-11-24 11:42:11
asal
914 orang telah melayarinya

Why Does Calling a Non-Static Method Statically in PHP Result in an Error?

Memahami Ralat Kaedah Statik Panggilan Kaedah Statik

Dalam PHP, coretan kod yang disediakan menemui mesej ralat:

Strict standards: Non-static method
Page::getInstanceByName() should not
be called statically in
/var/www/webworks/index.php on line 12
Salin selepas log masuk

Ralat ini berlaku apabila kaedah bukan statik dalam kelas Halaman dipanggil secara statik, yang bukan dibenarkan.

Betulkan

Untuk menyelesaikan isu ini, kaedah getInstanceByName() dalam kelas Halaman perlu diisytiharkan sebagai statik. Ubah suai baris:

function getInstanceByName($name='')
Salin selepas log masuk

kepada:

public static function getInstanceByName($name='')
Salin selepas log masuk

Dengan mengisytiharkan kaedah sebagai statik, anda boleh memanggilnya menggunakan nama kelas, seperti:

$r = Page::getInstanceByName($page);
Salin selepas log masuk

Pertimbangan Tambahan

  • Statik Kaedah dan Kebolehujian: Kaedah statik tidak boleh diejek atau ditikam, yang boleh menyukarkan untuk menguji kod yang bergantung padanya. Pertimbangkan untuk menggunakan suntikan pergantungan, di mana anda menghantar data ke dalam objek melalui pembina atau kaedahnya.
  • Kerumitan Pembina: Pembina dalam kelas Halaman melakukan terlalu banyak kerja, seperti menanyakan soalan pangkalan data. Pembina hanya boleh digunakan untuk memulakan keadaan objek, bukan untuk melaksanakan operasi yang kompleks.

Atas ialah kandungan terperinci Mengapa Memanggil Kaedah Bukan Statik Secara Statik dalam PHP Menghasilkan Ralat?. 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