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 중국어 웹사이트의 기타 관련 기사를 참조하세요!