php class를 사용하면서 접근제한자를 사용할 수 있게 됐다.
보통 PPP라고 하더라는...
public , protected , private
class Test1 {
var $a = 'a';
var $b = 'b';
var $c = 'c';
public function pub() { // public 선언
return $this->a;
}
protected function pro() { // protected 선언
return $this->b;
}
private function pri() { // private 선언
return $this->c;
}
}
class Test2 extends Test1 {
function fun_pub() { // public 호출
return $this->pub();
}
function fun_pro() { // protected 호출
return $this->pro();
}
function fun_pri() { // private 호출
return $this->pri();
}
}
위와 같은 class source 가 있다고 하자.
이 source 를 가지고 테스트하면 참으로 많은 것을 알 수 있다.
테스트 결과!!
---------------------------------------------------------------------------------
1. 테스트1
$v = new Test2;
echo $v->fun_pub();
echo "<br>".$v->fun_pro();
echo "<br>".$v->fun_pri();
의 결과는?
a
b
Fatal error: Call to private method Test1::pri() from context 'Test2' in ******************
테스트1의 결과로 알수 있는 내용은 하위 class에서는 private가 호출이 안된다는 것이다.
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
2. 테스트2
$v = new Test1;
echo $v->pub();
echo "<br>".$v->pro();
echo "<br>".$v->pri();
의 결과는?
a
테스트2의 결과로 알수 있는 내용은 일반 환경에서 public만 사용을 할 수 있다는 것이다.
즉 protected와 private는 class 밖에서는 호출이 안된다는 것이다.
---------------------------------------------------------------------------------
위의 테스트 결과로 접근제한자의 특성을 하나씩 정리해 보면
1. public
class : 사용가능
extends class : 사용가능
전체 : 사용가능
2. protected
class : 사용가능
extends class : 사용가능
전체 : 사용 불가능
3. private
class : 사용가능
extends class : 사용 불가능
전체 : 사용 불가능
위와 같이 정리를 할 수 있겠다.
php class에 관한 글 모음
최근 덧글