class A
{
private $x=100;
private $y=200;
}
$a=new A();
$x=(array) $a;
foreach($x as $key=>$val)
{
echo $x[$key];
}
의 private
변수에 문제가 Class A
있습니다.
클래스 객체를 배열로 형변환 할 때 클래스 외부의 개인 변수 액세스. 클래스 외부에서 액세스해서는 안됩니다. 그러나 위의 예에서는 클래스 A의 개인 변수에 액세스 할 수 있습니다.
결과는 다음과 같습니다.
100200
이 문제를 어떻게 해결할 수 있습니까?
거기에서 비공개 회원에 액세스하지 않습니다. 당신이 가진 모든 것은 객체의 상태를 보유하는 배열입니다. 캡슐화가 유지되며 클래스 블록 외부에서 개인 멤버 조작이 허용되지 않습니다.
이제 당신은 뒤로 구부려서 무엇이든 할 수있는 객체 상태를 얻을 수 있습니다. 그러나 그것은 단지 잘못 작성된 클라이언트 일뿐입니다.
언어가 할 수있는 일이 너무 많기 때문에 어떤 언어로든 좋은 / 나쁜 코드를 자유롭게 작성할 수 있어야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다