> 백엔드 개발 > PHP 튜토리얼 > 이전 PHP 버전(예: 5.2.17)에서 보호된 속성에 어떻게 액세스할 수 있나요?

이전 PHP 버전(예: 5.2.17)에서 보호된 속성에 어떻게 액세스할 수 있나요?

Linda Hamilton
풀어 주다: 2024-12-09 03:57:15
원래의
514명이 탐색했습니다.

How Can I Access Protected Properties in Older PHP Versions (e.g., 5.2.17)?

이전 PHP 버전을 사용하여 객체의 보호된 속성에 액세스

PHP에서 -> 운영자가 직접 허용되지 않습니다. 이러한 속성으로 작업해야 할 때 이는 어려울 수 있습니다.

5.2.17과 같은 이전 PHP 버전을 처리하는 경우 ReflectionClass 메서드를 사용하여 보호된 속성에 액세스하는 것은 옵션이 아닙니다.

해결책:

다행히도 이에 대한 비교적 간단한 해결책이 있습니다. 문제:

function accessProtected($obj, $prop) {
  $reflection = new ReflectionClass($obj);
  $property = $reflection->getProperty($prop);
  $property->setAccessible(true);
  return $property->getValue($obj);
}
로그인 후 복사

이 함수는 보호된 속성이 포함된 개체와 액세스하려는 속성의 이름이라는 두 가지 매개 변수를 사용합니다. ReflectionClass 클래스를 사용하여 객체의 반사를 만든 다음 getProperty() 메서드를 사용하여 특정 속성을 가져옵니다. 마지막으로 setAccessible() 메서드를 사용하여 속성의 접근성을 true로 설정한 다음 getValue() 메서드를 사용하여 값을 검색합니다.

사용 예:

$obj = new Fields_Form_Element_Location();
$currentValue = accessProtected($obj, '_value');
로그인 후 복사

주의 사항:

이 솔루션은 보편적이지 않습니다. 호환 가능. 일부 PHP 프레임워크 또는 특정 개체 구현에는 보호된 속성에 대한 외부 액세스를 방지하는 추가 제한 사항이 있을 수 있습니다. 이 기술을 사용하기 전에 항상 프레임워크 또는 개체 라이브러리의 문서를 확인하여 호환성을 확인하는 것이 좋습니다.

위 내용은 이전 PHP 버전(예: 5.2.17)에서 보호된 속성에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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