접근 제어자
객체지향 프로그래밍에서 클래스를 정의하다 보면 속성과 메소드의 접근을 제한할 필요가 있습니다. 이때 사용하는 것이 다음의 세 가지 접근 제어자(Access Modifier)입니다.
public
속성과 메소드가 어느 곳에서든 다 접근 가능합니다.
protected
속성과 메소드가 해당 클래스와 그 클래스를 상속받은 클래스 내에서만 접근 기능합니다.
private
속성과 메소드가 해당 클래스 내에서만 접근 가능합니다.
위의 세 가지 접근 제어자 중 흔히 사용되는 public과 private 접근 제어자의 사용법에 대해 알아봅시다.
먼저 다음의 예제를 통하여 public 접근 제어자의 사용법에 대해 알아봅시다.
07/ex7-6.php
<?php
class Member {
public $name; // 03
public function getName() {
return $this->name; // 06
}
}
$mem = new Member();
$mem->name = '홍길동'; // 외부에서도 접근 가능 // 12
echo "이름 : ".$mem->getName();
?>

03 $name 속성에 public 접근 제어자가 사용됩니다.
06 Member 클래스의 getName() 메소드 내부에서는 당연히 $this->name에 의해 $name 속성을 사용할 수 있습니다.
12 3행에서 $name 속성을 public으로 선언하였기 때문에 mem 객체의 $name 속성, 즉 $mem->name에 '홍길동'을 저장할 수 있습니다.
이와 같이 public 접근 제어자로 선언된 속성과 메소드는 어디서든 이들에 접근할 수 있습니다.
이번에는 위 예제 3행의 $name 속성에 다음과 같이 private 접근 제어자를 사용하여 봅시다.
07/ex7-7.php
<?php
class Member {
private $name;
public function getName() {
return $this->name;
}
}
$mem = new Member();
$mem->name = '홍길동'; // 접근 오류 발생
echo "이름 : ".$mem->getName();
?>

3행에서 $name 속성에 private 접근 제어자가 사용되었기 때문에 12행에서와 같이 클래스 외부인 객체에서는 $name 속성에 접근할 수 없게 됩니다.
이와 같이 private 접근 제어자로 선언된 속성과 메소드는 클래스 내부에서만 사용가능하고 외부에서는 접근할 수 없습니다.
private 접근 제어자로 선언된 속성에 값을 저장하기 위해서는 Setter(세터)를 사용하여야 합니다. Setter는 객체의 메소드에서 속성 값을 저장하는 데 사용되는 메소드를 말합니다. 반대로 값을 가져오는 데 사용되는 메소드를 Getter(게터)라고 합니다.
다음 예제를 통하여 private 속성에 사용되는 Setter와 Getter의 사용법을 익혀봅시다. 위 예제 7-7(ex7-7.php)을 Setter/Getter를 이용하여 다시 작성해보면 다음과 같습니다.
07/ex7-8.php
<?php
class Member {
private $name;
public function setName($name) { // 05
$this->name = $name;
} // 07
public function getName() { // 08
return $this->name;
} // 10
}
$mem = new Member();
$mem->setName("김정호");
echo "이름 : ".$mem->getName();
?>

05~07 Setter인 setName($name) 메소드는 3행의 private으로 선언된 $name 속성에 매개변수 $name의 값을 저장합니다./
08~10 Getter인 getName() 메소드는 객체의 $name 속성 값을 가져오는 데 사용됩니다.
위와 같이 Setter/Getter 방식 대신에 public 속성을 사용하면 훨씬 쉽게 클래스의 속성 값에 접근하기 쉽습니다.
그러나 클래스의 속성 값이 클래스 외부에서 변경되면 곤란한 경우도 있습니다. 이럴 경우에는 클래스의 속성을 private으로 선언한 다음 Setter/Getter를 이용하여 안전하게 속성의 값을 관리할 수 있습니다.
'프로그래밍 언어 > PHP' 카테고리의 다른 글
| phpMyAdmin 프로그램 (0) | 2026.06.20 |
|---|---|
| MySQL 서버 구동하기 (0) | 2026.06.20 |
| 클래스의 상속 (0) | 2026.06.18 |
| 생성자와 소멸자 (0) | 2026.06.18 |
| 속성과 메서드 (0) | 2026.06.17 |