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

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

Susan Sarandon
Susan Sarandonasal
2024-11-24 11:42:11833semak imbas

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

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='')

kepada:

public static function getInstanceByName($name='')

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

$r = Page::getInstanceByName($page);

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!

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