Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mendapatkan Nama Kelas Kelas Lanjutan daripada Panggilan Kaedah Statik dalam PHP?

Bagaimana untuk Mendapatkan Nama Kelas Kelas Lanjutan daripada Panggilan Kaedah Statik dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 21:29:29932semak imbas

How to Get the Classname of an Extended Class from a Static Method Call in PHP?

Mengambil semula Nama Kelas daripada Panggilan Statik dalam Kelas PHP Lanjutan

Melanjutkan kelas dalam PHP membolehkan penciptaan subkelas yang mewarisi sifat dan kaedah kelas induk mereka. Walau bagaimanapun, kaedah statik dalam kelas induk tidak boleh mengakses nama kelas kelas lanjutan secara langsung.

Masalah:

Dapatkan nama kelas kelas lanjutan apabila memanggil kaedah statik daripada kelas itu.

Sebagai Contoh:

<code class="php">class Action {
    function n() {/* something */}
}

class MyAction extends Action {/* some methods here */}</code>

Memanggil MyAction::n() sepatutnya mengembalikan "MyAction". Walau bagaimanapun, __CLASS__ dalam kelas Tindakan hanya mengembalikan "Tindakan".

Pengikatan Statik Lewat (PHP 5.3 ):

Sejak PHP 5.3, pengikatan statik lewat membolehkan anda menyelesaikan sasaran kelas untuk panggilan kaedah statik pada masa jalan. Gunakan get_called_class() untuk mendapatkan semula nama kelas:

<code class="php">class Action {
    public static function n() {
        return get_called_class();
    }
}

class MyAction extends Action {

}

echo MyAction::n(); //displays MyAction</code>

Sebagai alternatif:

Jika kaedah statik tidak statik, gunakan get_class($this) dalam kaedah untuk dapatkan nama kelas.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nama Kelas Kelas Lanjutan daripada Panggilan Kaedah Statik dalam 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