Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan \'Strict Standard: Kaedah bukan statik tidak boleh dipanggil secara statik\' Ralat PHP?

Bagaimana untuk Membetulkan \'Strict Standard: Kaedah bukan statik tidak boleh dipanggil secara statik\' Ralat PHP?

DDD
DDDasal
2024-11-27 05:32:10971semak imbas

How to Fix the

Menyelesaikan "Standard ketat: Kaedah bukan statik tidak boleh dipanggil secara statik" Ralat dalam PHP

Mesej ralat "Strict standards: Non-statik method should not be dipanggil statik" berlaku apabila kaedah bukan statik diakses menggunakan seruan statik. Untuk menangani ralat ini, kami akan mengubah suai kod untuk memastikan bahawa semua kaedah diisytiharkan sebagai statik apabila bertujuan untuk dipanggil secara statik.

Dalam kod yang disediakan, kaedah dalam kelas Halaman tidak diisytiharkan sebagai statik, tetapi mereka dipanggil sebagai statik. Untuk menyelesaikan isu ini, kita perlu menambah kata kunci statik pada pengisytiharan kaedah.

Ubah suai Halaman.php

class Page{
    // ...
    public static function getInstanceByName($name=''){
        // ...
    }
    // ...
}

Dengan menjadikan kaedah ini statik, kaedah ini boleh boleh diakses menggunakan nama kelas, seperti yang dilihat dalam fail index.php:

// ...
if($page){ // load by name
    $r = Page::getInstanceByName($page);
    if($r && isset($r->id)) $id = $r->id;
}
// ...

Tambahan Nota

  • Kaedah statik dan corak Singleton boleh menghalang ujian unit.
  • Pembina harus memberi tumpuan terutamanya pada menetapkan objek kepada keadaan yang sah dan bukannya melakukan pertanyaan yang meluas.
  • Pembina tidak boleh mengembalikan nilai; mereka sentiasa kembali terbatal.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'Strict Standard: Kaedah bukan statik tidak boleh dipanggil secara statik\' Ralat PHP?. 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