PHP의 상속 및 지연된 정적 바인딩 문제

WBOY
풀어 주다: 2016-08-08 09:26:46
원래의
780명이 탐색했습니다.

PHP 상속 모델의 오랜 문제는 상위 클래스에서 확장 클래스의 최종 상태를 참조하기 어렵다는 것입니다. 이는 PHP5.3 이전에 발생했습니다

1 php
2 3 클래스 ParentBase {
4 5 정적 $property = ' 상위 값';
6 7 공개 정적 함수 render() {
8 9 반환 본인::$property;
10 11 }
12 13 }
14 15 클래스 하위 확장 ParentBase {
16 17 정적 $property = '하위 값';
18 19 }
20 21 에코 하위::render();
22

이 예에서는 render() 메소드가 사용되었습니다. self 키워드는 다음을 참조합니다. Descendant 클래스가 아닌 ParentBase 클래스에 연결됩니다. ParentBase::render() 메서드에서 $property의 최종 값에 액세스할 수 있는 방법이 없습니다. self 키워드는 런타임이 아닌 컴파일 타임에 범위를 결정하기 때문입니다. 이 문제를 해결하기 위해 PHP5.3에서는 이 문제를 해결하고 static 키워드의 역할을 하위 클래스에서 다시 작성해야 합니다.

지연된 정적 바인딩 기능을 도입하면 코드에 표시된 대로 정적 범위 키워드를 사용하여 클래스의 속성이나 메서드의 최종 값에 액세스할 수 있습니다.

1 php
2 3 클래스 ParentBase {
4 5 정적 $property = '상위 값';
6 7 공개 static 함수 render() {
8 9 반환 정적::$property;
10 11 }
12 13 }
14 15 클래스 하위 확장 ParentBase {
16 17 정적 $property = '하위 값';
18 19 }
20 21 에코 하위 ::render();
22


정적 범위를 사용하면 PHP가 값을 찾도록 강제할 수 있습니다. 의 모든 속성 중 . 지연된 바인딩 동작 외에도

위에서는 PHP의 상속 및 지연된 정적 바인딩 문제를 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿