>  기사  >  백엔드 개발  >  PHP 새 정적 및 새 자체에 대한 자세한 설명

PHP 새 정적 및 새 자체에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-25 11:14:441262검색

현재 메서드가 정의된 클래스에 따라 현재 클래스에 대한 정적 참조에 self:: 또는 __CLASS__를 사용합니다. static:: 사용은 더 이상 현재 메서드가 정의된 클래스로 확인되지 않지만 계산됩니다. 실제 런타임에. 정적 메서드 호출에 사용할 수 있으므로(그러나 이에 국한되지는 않음) "정적 바인딩"이라고도 합니다.

최근 동영상 댓글에서 약간의 질문을 받았습니다. 여기에서 self 대신 static을 사용하도록 선택할 때 특별히 고려해야 할 사항이 있나요? 아니면 다음과 같이 질문을 바꿀 수도 있습니다:

PHP에서 new static과 new self는 정확히 무엇인가요?

사실, 예를 보면 매우 명확해집니다:

class Father {

 public static function getSelf() {
  return new self();
 }

 public static function getStatic() {
  return new static();
 }
}

class Son extends Father {}

echo get_class(Son::getSelf()); // Father
echo get_class(Son::getStatic()); // Son
echo get_class(Father::getSelf()); // Father
echo get_class(Father::getStatic()); // Father

이 점에 주의하세요. 여기에 있는 get_class(Son::getStatic());는 다음과 같이 요약할 수 있는 Son 클래스를 반환합니다. get_class(Son::getStatic()); 返回的是 Son 这个 class,可以总结如下:

new self

1.self返回的是 new self 中关键字 new 所在的类中,比如这里例子的 :

public static function getSelf() {
  return new self(); // new 关键字在 Father 这里
 }

始终返回 Father

new static

2.static 则上面的基础上,更聪明一点点:static 会返回执行 new static() 的类,比如 Son 执行 get_class(Son::getStatic()) 返回的是 Son, Father 执行 get_class(Father::getStatic()) 返回的是 Father

而在没有继承的情况下,可以认为 new selfnew static

new self

1.self 반환 다음 예와 같이 new self의 키워드 new가 있는 클래스입니다.

rrreee

는 항상 아버지.

new static

2. static은 위 내용을 기반으로 조금 더 똑똑해졌습니다. staticnew static() 클래스를 실행하기 위해 반환됩니다. 예를 들어 Songet_class(Son::getStatic())을 실행하고 Son을 반환하고, Father는 를 실행합니다. get_class(Father::getStatic())는 Father를 반환합니다

상속이 없으면 new selfnew static을 생각할 수 있습니다. 는 동일한 결과를 반환합니다. 팁: 좋은 IDE를 사용하면 댓글을 직접 읽을 수 있습니다. 예를 들어, PhpStorm:

위는 이 기사의 전체 내용입니다. 모든 사람의 학습에 도움이 되기를 바랍니다.

관련 추천:

PHP에서 new self()과 new static()의 차이점 분석
self

static

🎜🎜🎜

위 내용은 PHP 새 정적 및 새 자체에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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