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!