2012-03-06 43 views
6

Tôi đang cố gắng thực hiện điều này mà không yêu cầu chức năng trên lớp con ... điều này có khả thi không? Tôi có cảm giác nó không, nhưng tôi thực sự muốn chắc chắn ...Cách lấy tên lớp con từ lớp cha mẹ

<?php 
class A { 
    public static function who() { 
     echo __CLASS__; 
    } 
    public static function test() { 
     static::who(); // Here comes Late Static Bindings 
    } 
} 

class B extends A { 
    public static function who() { 
     echo __CLASS__; 
    } 
} 

B::test(); //returns B 
?> 

Trả lời

13

Sử dụng get_called_class() thay vì __CLASS__. Bạn cũng sẽ có thể thay thế static bằng self vì chức năng sẽ giải quyết lớp học thông qua kết thúc muộn cho bạn:

class A { 
    public static function who() { 
     echo get_called_class(); 
    } 
    public static function test() { 
     self::who(); 
    } 
} 

class B extends A {} 

B::test(); 
Các vấn đề liên quan