Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk mendapatkan semula nama kelas daripada panggilan kaedah statik dalam kelas PHP lanjutan?
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>
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>
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>
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!