PHP 지연 정적 바 인 딩 사용 방법 인 스 턴 스 분석

PHP 의 계승 모델 에 오래된 문제 가 있 습 니 다.그것 은 부모 클래스 에서 확장 클래스 를 참조 하 는 최종 상태 가 어렵 습 니 다.코드 목록 5-11 의 예 를 살 펴 보 겠 습 니 다.
코드 목록 5-11 예상 치 못 한 계승

<?php
 class ParentBase {
  static $property = 'Parent Value';
  public static function render() {
   return self::$property;
  }
 }
 class Descendant extends ParentBase {
  static $property = 'Descendant Value';
 }
 echo Descendant::render();
 Parent Value
이 예 에서 render()방법 에 self 키 워드 를 사 용 했 습 니 다.이것 은 Descendant 클래스 가 아 닌 Parent Base 클래스 를 말 합 니 다.Parent Base::render()방법 에서$property 의 최종 값 에 접근 할 수 없습니다.이 문 제 를 해결 하기 위해 서 는 하위 클래스 에서 render()방법 을 다시 써 야 합 니 다.
지연 정적 바 인 딩 기능 을 도입 하여 static 역할 도 메 인 키워드 접근 류 의 속성 이나 방법의 최종 값 을 사용 할 수 있 습 니 다.예 를 들 어 코드 와 같 습 니 다.

 <?php
 class ParentBase {
  static $property = 'Parent Value';
  public static function render() {
   return static::$property;
  }
} 
 class Descendant extends ParentBase {
  static $property = 'Descendant Value';
 }
 echo Descendant::render();
 Descendant Value
정적 역할 영역 을 사용 하면 최종 클래스 에서 모든 속성의 값 을 찾 도록 PHP 를 강제 할 수 있 습 니 다.이 연결 지연 행위 외 에 도 PHP 에 get 이 추가 되 었 습 니 다.called_class()함수,계승 방법 이 어떤 파생 클래스 에서 호출 되 었 는 지 검사 할 수 있 습 니 다.다음 코드 는 get 사용 을 보 여 줍 니 다.called_class()함수 가 현재 클래스 호출 장면 을 얻 는 방법 입 니 다.
get 사용called_class()방법

 <?php
 class ParentBase {
  public static function render() {
   return get_called_class();
  }
 }
 class Decendant extends ParentBase {}
 echo Descendant::render(); 
 Descendant
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기