인터뷰 때 질문을 받았는데, 답변을 드릴 수밖에 없어서 여기에 요약하고 싶습니다.
현재 메서드가 정의된 클래스에 따라 self:: 또는 __CLASS__
현재 클래스에 대한 정적 참조를 사용하세요.
static:: 사용은 더 이상 현재 메서드가 정의된 클래스로 구문 분석되지 않습니다. 그러나 실제 런타임에 계산됩니다. 정적 메서드 호출에 사용할 수 있으므로(그러나 이에 국한되지는 않음) "정적 바인딩"이라고도 합니다.
정적 바인딩은 PHP 5.3.0입니다. 상속 범위에서 정적으로 호출되는 클래스를 참조하는 데 사용되는 추가된 함수입니다.
간단히 말하면
self는 어떤 클래스에 작성되는지, 이것이 실제로 호출되는 클래스입니다. .
static은 사용하는 클래스를 나타내며 이는 상위 클래스에 작성한 static이며 하위 클래스에 의해 재정의되고 하위 클래스의 메서드나 속성이 사용됩니다
<?phpclass Person{ public static function name() { echo "111"; echo "<br />"; } public static function callself() { self::name(); } public static function callstatic() { static::name(); } }class Man extends Person{ public static function name() { echo "222"; echo "<br />"; } } Man::callself(); // output: 111Man::callstatic(); // output: 222?>
위 내용은 PHP에서 정적과 자체의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!