Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan Ralat PHP \'Panggilan Kaedah Bukan Statik Secara Statik\'?

Bagaimana untuk Membetulkan Ralat PHP \'Panggilan Kaedah Bukan Statik Secara Statik\'?

Susan Sarandon
Susan Sarandonasal
2024-12-14 20:17:26106semak imbas

How to Fix the PHP

Ralat: Panggilan Kaedah Bukan Statik Secara Statik

Apabila cuba mengakses kaedah bukan statik sebagai fungsi statik, PHP menjana mesej ralat Standard ketat: Bukan- kaedah statik tidak boleh dipanggil statik. Isu ini sering timbul apabila kaedah kelas digunakan tanpa membuat seketika objek kelas.

Penyelesaian:

1. Nyatakan Objek Kelas:
Untuk menyelesaikan isu ini, anda perlu mencipta tika kelas sebelum cuba memanggil kaedahnya. Contohnya, bukannya:

Page::getInstanceByName($page);

Gunakan:

$pageInstance = new Page();
$pageInstance->getInstanceByName($page);

2. Tandakan Kaedah sebagai Statik:
Jika anda berhasrat untuk memanggil kaedah tanpa membuat seketika kelas, anda boleh mentakrifkan kaedah sebagai statik dalam kelas. Contohnya:

class Page {

    public static function getInstanceByName($name) {
        // method implementation
    }

}

Ini membolehkan anda memanggil kaedah terus menggunakan nama kelas:

Page::getInstanceByName($page);

Pertimbangan Tambahan:

1. Kebolehujian:
Perhatikan bahawa kaedah statik dan tunggal boleh menghalang kebolehujian. Anda mungkin ingin mempertimbangkan corak reka bentuk alternatif untuk meningkatkan keupayaan ujian.

2. Pengoptimuman Pembina:
Elakkan meletakkan tugas yang berlebihan dalam pembina. Pembina hanya perlu mengendalikan menetapkan objek ke dalam keadaan yang sah. Pertimbangkan untuk menyuntik kebergantungan data daripada mengambilnya terus daripada pembina. Ingat bahawa pembina tidak boleh mengembalikan nilai dan sentiasa mengembalikan tidak sah.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat PHP \'Panggilan Kaedah Bukan Statik Secara Statik\'?. 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