당신이 echo
에 의해 "발표"중이기 때문에 이런 일이 일어납니다. 당신은 예를 들어 이런 식으로 참조 할 수 없습니다 :
class test {
private $a = 'b';
function __construct() {
echo 'instantiated';
}
}
$test = new test();
echo $test->a; // This line won't work, since it's a private var.
그것은 당신에게 다음과 같다 오류 메시지가 줄 것이다 : 내가 전에 말했듯이
Fatal error: Cannot access private property test::$a
Example (https://eval.in/226435)
을, 에서 이내에 액세스하고 있으므로 클래스를 볼 수 있습니다. (즉, $instance
당신이해야합니다.)이처럼 사용하도록 코드를 수정하는 경우 :
class test {
protected $a = "b";
public static function oo(){
$instance = new static();
return $instance;
}
}
echo test::oo()->a;
Example of the above (https://eval.in/226439)
당신은 그 "개인 ACESS ㅋ ㅋ ㅋ ㅋ"오류가 발생합니다.
잘못된 설명을 이해하고 있습니다. "private and protected cannot be referenced from outside the class"
은 위의 예에서와 같이 수업 외부의 변수에 액세스 할 수는 없지만 클래스의 내부에서 액세스한다는 것을 의미합니다. 즉, 필요에 따라 수행 할 것입니다 (echo
' 않았다)
주요 문제는 다음과 같습니다. 클래스 외부는 인스턴스화 된 객체 외부와 동일하지 않습니다. 차이점이 있습니다. – Wrikken
@Wrikken +1, 정확한 요지. – dcastro