2009-07-31 43 views
13

Có thể lấy tên của lớp cấp cao nhất từ ​​một lớp mở rộng mà không cần đặt tên lớp đó từ lớp cấp cao nhất. Xem ví dụ dưới đây, tôi muốn lấy 'Foo' từ Base. Tôi biết tôi có thể thiết lập một biến từ Foo, nhưng hy vọng bỏ qua bước bổ sung.Lấy tên lớp học từ lớp mở rộng

Cảm ơn.

class Base { 

    function __construct() { 

     echo '<p>get_class: '.get_class().'</p>'; 
     echo '<p>__CLASS__: '.__CLASS__.'</p>'; 

    } 

} 


class Foo extends Base { 

} 


$test = new Foo(); 

(PHP 5.2.4+)

Trả lời

25

Sử dụng:

get_class($this); 
+0

Không biết ai để ghi nhận điều này. Vì vậy, tôi sẽ chọn người đầu tiên với câu trả lời. –

25

get_called_class() cho các lớp học tĩnh hoặc get_class($this) cho được thuyết minh.

get_called_class(), như Jason cho biết, đã được giới thiệu trong PHP 5.3

+1

'get_called_class() 'là chỉ có sẵn từ 5.3 – jason

+5

Tôi yêu PHP 5.3. –

+1

Kể từ PHP 5.5, bạn có thể sử dụng 'static :: class' thay vì' get_called_class() 'và' get_class ($ this) '. –

3

Bạn chỉ có thể sử dụng:

get_class($this); 
Các vấn đề liên quan