Rumah > pembangunan bahagian belakang > tutorial php > 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
Lepaskan: 2024-10-31 21:29:29
asal
1013 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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