PHP에서 self 키워드는 현재 클래스를 나타낼 수 있으며 일반적으로 현재 클래스의 정적 메서드나 정적 속성을 호출하는 데 사용됩니다. 그러나 static 속성을 정의할 수 있는 것 외에도 static에는 self(현재 클래스를 나타냄)와 유사한 기능도 있습니다.
하지만 둘 사이에는 여전히 일정한 차이가 있습니다.
<?php header("Content-Type:text/html;charset=utf-8"); Class A{ public static $p1=1; public $p2=2; public static function showInfo(){ echo "<br/>".self::$p1; } public static function showInfo2(){ echo "<br/>".static::$p1; } } Class B extends A{ static $p1=10;//此处覆盖继承过来的变量p1. public $p2=20; } A::showInfo(); echo "<br/>"; B::showInfo(); echo "<hr/>"; A::showInfo2(); echo "<br/>"; B::showInfo2();
결과에서 볼 수 있습니다.
showInfo() 메서드가 호출되면 출력 개체는 self입니다. ::$p1 . 이때, 클래스 B가 클래스 A를 상속하고, 상속된 메소드가 클래스 B에서 호출되더라도 표시되는 것은 항상 self 키워드가 위치한 클래스입니다. 따라서 self가 표현하는 현재 클래스는 주로 현재 코드가 위치한 클래스라고 할 수 있다.
showInfo2() 메소드가 호출되면 출력 객체는 static::$p1입니다. 이때 출력 결과가 다릅니다. 클래스 A는 호출하는 속성을 출력합니다. B는 또한 자신이 호출하는 속성(클래스 A의 메서드를 상속한 후 덮어쓰는 $p2 값)을 출력합니다. 따라서 static은 현재 메서드가 호출되는 클래스를 나타냅니다.
따라서 self와 static 모두 현재 클래스를 나타낼 수 있지만 그 의미는 다릅니다.
관련 권장 사항:
위 내용은 PHP에서 self와 static의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!