Làm cách nào để tự động truy xuất không gian tên lớp?Nhận không gian tên lớp PHP động
Ma thuật var __NAMESPACE__
không đáng tin cậy vì các lớp con không được xác định chính xác.
Ví dụ:
class Foo\bar\A
->__NAMESPACE__
=== Foo \ thanh
class Ping\pong\B extends Foo\bar\A
->__NAMESPACE__
=== Foo \ bar (nó nên được Ping \ pong)
ps: Tôi nhận thấy cùng một hành vi sai khi sử dụng __CLASS__
, nhưng tôi đã giải quyết bằng cách sử dụng get_called_class()
... có gì đó giống như get_called_class_namespace()
không? Làm thế nào tôi có thể thực hiện chức năng như vậy?
UPDATE:
Tôi nghĩ rằng giải pháp là trong câu hỏi của riêng tôi, vì tôi nhận ra get_called_class()
trả về tên lớp đầy đủ và do đó tôi có thể trích xuất các namespace từ nó: D ... Dù sao nếu có một hiệu quả hơn phương pháp tiếp cận cho tôi biết;)
Giải pháp của bạn là những gì tôi phải làm trong mã cá nhân. http://codepad.viper-7.com/EgObtf –
Những gì bạn mô tả không phải là hành vi sai trái. Xem những gì các hằng số thực hiện: http://php.net/language.constants.predefined - và khi bạn đã tìm thấy một giải pháp cho vấn đề của bạn, bạn có thể trả lời câu hỏi của riêng bạn. – hakre
Kiểm tra điều này. Tôi nghĩ đây là ý của bạn: http://stackoverflow.com/questions/2317343/get-child-class-namespace-from-superclass-in-php/20193599#20193599 – Chris