개발! 딱 깔끔하고 센스있게!

확장 PHP 클래스의 정적 호출에서 클래스 이름을 얻는 방법은 무엇입니까? 본문

개발 스크랩 메모/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 
Comments