Jak mogę automatycznie pobrać nazw klasy?Uzyskaj klasy nazw PHP dynamicznie
Magia var __NAMESPACE__
jest zawodna, ponieważ w podklasy nie jest poprawnie zdefiniowany.
przykład:
class Foo\bar\A
->__NAMESPACE__
=== Foo \ bar
class Ping\pong\B extends Foo\bar\A
->__NAMESPACE__
=== Foo \ bar (należy ping \ pong)
PS: zauważył tak samo złe zachowanie używając __CLASS__
, ale rozwiązany za pomocą get_called_class()
... jest tam coś get_called_class_namespace()
? Jak mogę wdrożyć taką funkcję?
UPDATE:
Myślę, że rozwiązanie jest w moim pytaniu, ponieważ zdałem sobie sprawę get_called_class()
Zwraca w pełni kwalifikowaną nazwę klasy, a więc mogę wydobyć z niej nazw: D ... W każdym razie, jeśli nie jest bardziej skuteczna podejście daj mi znać;)
Twoje rozwiązanie jest to, co miałem zrobić w kodzie osobistego. http://codepad.viper-7.com/EgObtf –
To, co opisujesz, nie jest niewłaściwym zachowaniem. Zobacz, jakie są te stałe: http://php.net/language.constants.predefined - a ponieważ znalazłeś rozwiązanie swojego problemu, możesz odpowiedzieć na własne pytanie. – hakre
Sprawdź to. Myślę, że to, co masz na myśli: http://stackoverflow.com/questions/2317343/get-child-class-namespace-from-superclass-in-php/20193599#20193599 – Chris