"self"는 현재 클래스를 참조하는 키워드입니다. 클래스 코드 내에서만 사용할 수 있습니다.
클래스를 사용하여 메서드를 호출 할 수 있지만 바인딩으로 인해이 메서드를 사용하여 수퍼 클래스의 메서드를 호출 할 수도 있습니다.()를 TestB :: makeNewInstance를 호출, 지금
class TestA {
public static function makeNewInstance() {
return new TestA();
}
}
class TestB extends TestA {
}
;
는 다음과 같은 예를 생각해 TestA의 인스턴스를 반환합니다. 를 TestB의 인스턴스를 반환합니다)를 TestB :: makeNewInstance을 (전화,
class TestA {
public static function makeNewInstance() {
return new self();
}
}
class TestB extends TestA {
}
을 지금이 하나와 비교
을 (를 TestB 메소드를 상속 있지만하여 TestA 직접 연결, 그래서 여전히 반환됩니다). (자체 참조하는 현재 클래스를 참조하고 TestB에서 호출하는 경우 "self"의 내용은 이제 TestA 대신 TestB가됩니다.
희망을 설명합니다. 그렇지 않으면 귀하의 질문에 좀 더 자세하게 더 구체적인 답변을 찾아야합니다.
대단한 설명 – Sikander