2016-09-22 6 views
0

변수가있는 User 클래스가 있습니다. private $ uPass;PHP OOP - var_dump를 사용하여 외부 클래스에서 액세스 할 수있는 private 변수?

나는 User의 인스턴스를 만들 때 인스턴스에 var_dump를 실행하여 모든 개인 변수를 나열한다는 사실을 알아 차 렸습니다. 이 기능을 끄는 방법이 있습니까?

class User 
{ 
    private $uId; 
    private $uName; 
    private $uPass; 
    private $uPowers; 

$teamMembers[$count] = new User(); 

foreach ($teamMembers as $teamMember) 
{ 
    var_dump($teamMember); 
} 

그리고 출력이 바로 암호를 포함하여 모든 것을 보여줍니다 ... 는 당연히 그들은 암호화하고 있지만 여전히이 같은 액세스 할 수 싶지 않아!?

이 문제를 해결하는 올바른 방법은 무엇입니까?

+2

var_dump()는 개인 변수에 액세스하는 것과 동일하지 않습니다. 아직 코드에 액세스 할 수 없습니다. 클래스, 디버깅 도구 및 리플렉션에만 적용됩니다. –

+0

var_dump가 문제가되는 경우 [ReflectionClass] (http://stackoverflow.com/questions/11604946/can-i-get-the-value-of-a-private-property-with-reflection)도 확인하십시오 데이터베이스 도구에서 값을 숨길 수없는 것처럼 값을 숨길 수는 없습니다. 값을 PHP로 채우지 않고 DB에서만 테스트 할 수 있습니다. – Gectou4

답변

2
그것은 정확히하고있어

무엇 그것이 난데 : 개체가 PHP 5.6.0에서 구현 __debugInfo() 메소드를 (구현하지 않는 객체의

모든 공공 민간 및 보호 속성은 출력에 반환됩니다).

맞춤 __debugInfo 메서드를 구현할 수 있습니다. 또는 걱정할 필요가 없습니다. 이것은 누군가가 소스 코드 나 객체의 직렬화 된 복사본에 액세스 할 수있는 경우에만 보안 상 위험 할 수 있습니다. 둘 다 훨씬 더 광범위한 보안 문제의 징조 일 수 있습니다.