>백엔드 개발 >PHP 튜토리얼 >PHP의 정적 메서드 호출에서 확장 클래스의 클래스 이름을 얻는 방법은 무엇입니까?

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

Linda Hamilton
Linda Hamilton원래의
2024-10-31 21:29:291017검색

How to Get the Classname of an Extended Class from a Static Method Call in PHP?

확장 PHP 클래스의 정적 호출에서 클래스 이름 검색

PHP에서 클래스를 확장하면 속성을 상속하는 하위 클래스를 생성할 수 있습니다. 및 부모 클래스의 메서드. 그러나 상위 클래스의 정적 메서드는 확장 클래스의 클래스 이름에 직접 액세스할 수 없습니다.

문제:

정적 메서드 호출 시 확장 클래스의 클래스 이름을 가져옵니다.

예:

<code class="php">class Action {
    function n() {/* something */}
}

class MyAction extends Action {/* some methods here */}</code>

MyAction::n()을 호출하면 "MyAction"이 반환되어야 합니다. 그러나 Action 클래스의 __CLASS__는 "Action"만 반환합니다.

후기 정적 바인딩(PHP 5.3):

PHP 5.3부터 후기 정적 바인딩을 사용하면 대상을 확인할 수 있습니다. 런타임 시 정적 메서드 호출을 위한 클래스입니다. get_called_class()를 사용하여 클래스 이름을 검색합니다.

<code class="php">class Action {
    public static function n() {
        return get_called_class();
    }
}

class MyAction extends Action {

}

echo MyAction::n(); //displays MyAction</code>

또는:

정적 메소드가 정적이 아닌 경우 메소드에서 get_class($this)를 사용하여 클래스 이름을 얻으세요.

위 내용은 PHP의 정적 메서드 호출에서 확장 클래스의 클래스 이름을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.