<span>class</span><span> A { </span><span>public</span><span>static</span><span>function</span><span> get_self() { </span><span>return</span><span>new</span><span> self(); } </span><span>public</span><span>static</span><span>function</span><span> get_static() { </span><span>return</span><span>new</span><span>static</span><span>(); } } </span><span>class</span> B <span>extends</span><span> A {} </span><span>echo</span><span>get_class</span>(B::get_self()); <span>//</span><span> A</span><span>echo</span><span>get_class</span>(B::get_static()); <span>//</span><span> B</span><span>echo</span><span>get_class</span>(A::get_static()); <span>//</span><span> A</span>
self는 호출 컨텍스트가 아닌 구문 분석 컨텍스트를 나타냅니다. 이 예에서 self는 self를 호출하는 B가 아니라 get_self()를 정의하는 A로 확인됩니다.
지연된 정적 바인딩 개념은 php5.3에서 도입되었습니다. 이 기능의 가장 확실한 상징은 새로운 키워드 static입니다. static은 호출되는 클래스를 나타냅니다. 예제에서 B::get_static()은 A를 인스턴스화하는 대신 새로운 B를 생성합니다
위 내용은 PHP new self와 new static에 대한 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.