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

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

Susan Sarandon
Susan Sarandonasal
2024-11-01 10:10:291004semak imbas

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

Mendapatkan Nama Kelas daripada Extended PHP Class Static Call

Dalam pengaturcaraan berorientasikan objek, kelas sering memanjangkan kelas asas untuk mewarisi dan melanjutkan fungsinya . Senario biasa melibatkan keperluan untuk mendapatkan nama kelas daripada panggilan kaedah statik dalam kelas lanjutan, walaupun hakikatnya CLASS sentiasa mengembalikan nama kelas yang menentukan.

Masalah: Tidak Kebolehcapaian Nama Kelas dalam Kaedah Statik Induk

Pertimbangkan senario dengan dua kelas, Action dan MyAction, di mana MyAction memanjangkan Tindakan. Tindakan mentakrifkan kaedah statik, n(), yang tidak boleh diakses melalui pemalar CLASS dalam kaedah statik induk, menghasilkan CLASS nilai ditetapkan kepada "Tindakan" tanpa mengira kelas panggilan.

Penyelesaian:

1. Pengikatan Statik Lewat (PHP 5.3 ):

Ikatan statik lewat membolehkan anda menentukan kelas sasaran panggilan kaedah statik pada masa jalan dan bukannya apabila kaedah ditakrifkan. Ini dicapai menggunakan fungsi get_called_class(), yang mengembalikan nama kelas di mana kaedah statik dipanggil.

Contohnya:

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

class MyAction extends Action {

}

echo MyAction::n(); // Outputs "MyAction"</code>

2. Menggunakan get_class($this) (Kaedah Bukan Statik Sahaja):

Jika kaedah yang dimaksudkan bukan statik, anda boleh menggunakan get_class($this) untuk mendapatkan kelas nama dari mana kaedah itu dipanggil.

Contohnya:

<code class="php">class Action {
    public function n() {
        echo get_class($this);
    }
}

class MyAction extends Action {

}

$foo = new MyAction;
$foo->n(); // Outputs "MyAction"</code>

Kesimpulan:

Kedua-dua pengikatan statik lewat dan get_class($this) menawarkan penyelesaian untuk mendapatkan semula nama kelas daripada panggilan kaedah statik dalam kelas lanjutan. Pengikatan statik lewat lebih disukai untuk kaedah statik, manakala get_class($this) berguna untuk kaedah bukan statik.

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