Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk mendapatkan semula nama kelas daripada panggilan kaedah statik dalam kelas PHP lanjutan?

Bagaimana untuk mendapatkan semula nama kelas daripada panggilan kaedah statik dalam kelas PHP lanjutan?

Mary-Kate Olsen
Lepaskan: 2024-10-30 21:53:30
asal
987 orang telah melayarinya

How to retrieve the class name from a static method call in extended PHP classes?

Mengambil Nama Kelas daripada Panggilan Statik dalam Kelas PHP Lanjutan

Dalam dunia PHP, selalunya perlu untuk menentukan nama kelas daripada statik panggilan fungsi, terutamanya apabila bekerja dengan kelas lanjutan. Pertimbangkan senario berikut:

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

class MyAction extends Action {/* further implementation */}</code>
Salin selepas log masuk

Dalam situasi ini, memanggil MyAction::n(); harus mengembalikan "MyAction" sebagai nama kelas. Walau bagaimanapun, pembolehubah __CLASS__ hanya mengembalikan nama kelas induk ("Tindakan").

Pengikatan Statik Lewat (PHP 5.3 ):

PHP 5.3 memperkenalkan pengikatan statik lewat, yang membolehkan menyelesaikan kelas sasaran pada masa jalan. Ciri ini memungkinkan untuk menentukan kelas yang dipanggil menggunakan fungsi get_called_class():

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

class MyAction extends Action {

}

echo MyAction::n(); // Output: MyAction</code>
Salin selepas log masuk

Pendekatan Alternatif (Pra-PHP 5.3):

Sebelum PHP 5.3, penyelesaian alternatif bergantung pada penggunaan kaedah bukan statik dan fungsi get_class():

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

class MyAction extends Action {

}

$foo = new MyAction;

echo $foo->n(); // Output: MyAction</code>
Salin selepas log masuk

Ingat, pendekatan ini hanya berfungsi untuk kaedah bukan statik, kerana fungsi get_class() mengambil contoh daripada kelas sebagai hujah.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan semula nama kelas daripada panggilan kaedah statik dalam kelas PHP lanjutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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