개발 스크랩 메모/PHP
확장 PHP 클래스의 정적 호출에서 클래스 이름을 얻는 방법은 무엇입니까?
렉사이
2020. 12. 18. 22:42
나는 동작과 나의 동작이 두 종류다.
후자 성명:
class MyAction extends Action {/* some methods here */}
나는 action 종류의 방법만 필요합니다 (그중에서 많은 상속된 종류가 있기 때문에, 모든 종류에서 이 방법을 실현하고 싶지 않습니다.
)다음은 내가 할 말:
Class Action { function n(){/* something */} }
내가 불렀을 때:
MyAction::n(); // it should return "MyAction"
그러나 부류의 모든 성명은 아버지의 변수를 방문할 수 있을 뿐, 이 변수의 값은 "action" 이다.
무슨 방법이 있습니까?
대답
유류는 항상 그 종류의 이름을 되돌려 쓰기 때문에 정적 방법에 큰 도움이 되지 않는다.
만약 이 방법이 정적이 아니라면, get 종류 ($this) 를 간단히 사용할 수 있습니다.
예컨대
class Action { public function n(){ echo get_class($this); } } class MyAction extends Action { } $foo=new MyAction; $foo->n(); //displays 'MyAction'
후기 정적 바인딩, php 5.3 중 제공
현재 PHP5.3은 후기 정태를 사용할 수 있습니다.
실행할 때 정적 방법으로 호출되는 목표류를 분석할 수 있습니다.
이 특성으로는 새로운 마술 상량을 도입하지 않았지만, 새로운 함수 get u called class () 를 불러올 수 있습니다.
정태 방법의 이름을 알려줄 수 있습니다.
다음은 예입니다:
Class Action { public static function n() { return get_called_class(); } } class MyAction extends Action { } echo MyAction::n(); //displays MyAction