클래스의 다른 인스턴스가 서로의 개인 멤버 변수를 알 수있는 것처럼 보입니다.PHP 범위와 클래스 인스턴스 상호 작용
나는 내 문제를 선전하려는 몇 가지 코드를 제공했으며이를 설명하려고 노력할 것입니다.
개인 멤버 변수 $hidden
이있는 클래스가 있습니다. modifyPrivateMember
은 $hidden
의 값을 3
으로 설정합니다. accessPrivateMember
은 Object
을 매개 변수로 사용하고 은 개인$hidden
구성원에 액세스하여 값을 반환합니다.
예제 코드 :
$ php example.php
3
사람이 객체의 private 멤버가 같은 클래스의 다른 인스턴스가 액세스 할 수있는 이유를 설명 할 수 : 위의 코드의
<?php
// example.php
class Object {
private $hidden;
public function modifyPrivateMember() {
$this->hidden = 3;
}
public function accessPrivateMember(Object $otherObject) {
return $otherObject->hidden;
}
}
$firstObject = new Object;
$firstObject->modifyPrivateMember();
$otherObject = new Object;
echo $otherObject->accessPrivateMember($firstObject);
출력? 이 표면상의 범위 위반에 대한 정당성이 있습니까?
지금까지 답변을 통해 코드가 예시 한 내용을 알려주었습니다. 나는 정말로 * 왜 * 물건이 이런 식의 질문에 대한 답을 찾고 있습니다. 가시성이 클래스가 아닌 객체가 아닌 이유는 무엇입니까? 어떤 장점이 있습니까? –
지금 당장 추측하고 있지만 PHP는 수정 자 동작을 포함하여 java에서 할당합니다. 어쩌면 자바는 타입 시스템 때문에 클래스 레벨에서 그것을해야한다. 어쩌면 루비가 인스턴스 수준에서이를 수행 할 수있는 이유를 설명 할 수 있습니다. 그러나 다시 그저 추측. – MrHus