오늘 사장님께서 회사에서 진행하는 10가지 프로그램 중에 새로운 정적인 것과 새로운 자아의 차이점에 대해 물으셨는데요. 그 중 단 한 가지도 답변을 해주신 적이 없습니다. 나중에 보충하겠습니다. . .
집에 돌아온 후 Baidu에 가서 둘의 차이점을 알아봤습니다.
self:: 또는 사용 __CLASS__ 현재 클래스에 대한 정적 참조는 현재 메서드가 정의된 클래스에 따라 다릅니다.
static::을 사용하는 는 더 이상 현재 메서드가 정의된 클래스로 구문 분석되지 않습니다. 메소드가 정의되어 있지만 실제로는 시간에 따라 계산되어 실행됩니다. 정적 메서드 호출에 사용할 수 있으므로(그러나 이에 국한되지는 않음) "정적 바인딩"이라고도 합니다.
간단히 말하면 self는 어느 클래스에 작성되어 있는지를 의미하며, 이 클래스를 실제로 호출하는 것은 소위 후기 정적 바인딩, static은 사용되는 클래스, 즉 여러분이 속한 클래스를 나타냅니다. 상위 클래스에서 사용 정적
을 작성한 다음 이 정적을 하위 클래스를 통해 직접/간접적으로 사용합니다. 이 정적은 이 하위 클래스를 참조하므로 static은 $this와 매우 유사하지만 static은 가능합니다. 정적 메소드 및 속성 등에 사용됩니다.
예제를 참조하세요
<?<span>php </span><span>class</span><span> Person { </span><span>public</span><span>static</span><span>function</span><span> name() { </span><span>echo</span> "xiaosan"<span>; } </span><span>public</span><span>static</span><span>function</span><span> callself() { self</span>::<span>name(); } </span><span>public</span><span>static</span><span>function</span><span> callstatic() { </span><span>static</span>::<span>name(); } } </span><span>class</span> Man <span>extends</span><span> Person { </span><span>public</span><span>static</span><span>function</span><span> name() { </span><span>echo</span> "gaojin"<span>; } } Man</span>::name(); <span>//</span><span> output: gaojin</span>Person::callself(); <span>//</span><span> output: xiaosan</span>Person::callstatic(); <span>//</span><span> output:gaojin</span>?>
편집자는 계속 공부한다
위 내용은 관련 내용을 포함하여 PHP의 새로운 정적과 새로운 자아의 차이점을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.