2015-04-10 3 views
1

Это было несколько сложно объяснить, и это, вероятно, очень глупый дизайн, но из любопытства есть способ получить имя класса статического метода , который вызывает другой статический метод в другом классе.PHP: Получить имя класса статического метода, вызывающего другой статический класс

Класс A вызывает статический метод B в классе B, который вызывает статический метод C в классе C. В классе C мне нужно имя класса непосредственного метода, который называется статическим методом C, который будет являться классом B.

class A { 
    function A() { 
     echo B::B(); 
    } 
} 

class B { 
    function B() { 
     return C::C(); 
    } 
} 

class C { 
    function C() { 
     return get_called_class(); 
    } 
} 

Это возвращает: A. Я хотел бы, чтобы вернуться: Б.

даже возможно ли это?

+1

вы можете отправить его вместе с вызовом в качестве параметра – ArtisticPhoenix

ответ

1

Вы можете использовать для этого стек. Посмотрите на http://php.net/debug_backtrace.

Из-за инкапсуляции классов не требуется дизайн, который метод знает, что происходит снаружи. Поэтому единственный способ, который приходит мне на ум, - это довольно причудливый способ.

И вы не должны полагаться на эту информацию, поскольку она разрушает инкапсуляцию. Если вам нужна эта информация, передайте ее как параметр!

+0

Да, вы правы. Я передам его как параметр. Благодаря! – dvlpr

0

Не уверен, что именно вы пытаетесь сделать, но посмотрите на PHP page for the Static keyword. Вы упоминаете статический метод, но код не имеет статичности нигде.

Смежные вопросы