PHP 접근 제한자: 초보자 가이드
안녕하세요, 미래의 PHP 개발자 여러분! 오늘 우리는 PHP의 접근 제한자 세계로 뛰어들어 보겠습니다. 코드 한 줄도 적어본 적이 없더라도 걱정 마세요 - 이 여정에서 여러분의 친절한 안내자가 될게요. 이 튜토리얼이 끝나면 접근 제한자를 마스터하듯 사용할 수 있을 거예요!
접근 제한자는 무엇인가요?
먼저 접근 제한자가 무엇인지 이해해 보겠습니다. 접근 제한자는 코드의 경비원이라고 생각해 보세요. 그들은 프로그램의 다른 부분을 볼 수 있고 사용할 수 있는 사람을 kontroll합니다. PHP에서는 세 가지 주요 접근 제한자가 있습니다:
- Public
- Private
- Protected
이들 각각을 자세히 탐구해 보겠습니다.
Public 회원
열린 책
Public 회원은 마치 열린 책처럼 - 누구나 읽고, 누구나 쓸 수 있습니다. PHP에서 무언가를 public로 선언하면, 그것은 코드 어디서든 접근할 수 있음을 의미합니다.
예제를 보겠습니다:
<?php
class Book {
public $title;
public function setTitle($newTitle) {
$this->title = $newTitle;
}
}
$myBook = new Book();
$myBook->title = "PHP for Beginners";
echo $myBook->title; // 출력: PHP for Beginners
$myBook->setTitle("Advanced PHP");
echo $myBook->title; // 출력: Advanced PHP
?>
이 예제에서 $title
은 public 속성이고 setTitle()
은 public 메서드입니다. 우리는 $title
을 직접 접근하고 수정할 수 있고, setTitle()
을 클래스 외부에서 호출할 수 있습니다.
Public 사용 시기
속성이나 메서드가 어디서나 접근할 수 있기를 원할 때 public을 사용하세요. 널리 사용될 것으로 예상되는 기능에 유용하지만, 너무 많은 public 접근은 예상치 못한 데이터 변경으로 이어질 수 있으니 주의하세요.
Private 회원
비밀 일기
Private 회원은 마치 비밀 일기처럼 - 오직 주인(클래스 자신)만이 읽고 쓸 수 있습니다. 무언가를 private으로 선언하면, 그것은 동일한 클래스 내에서만 접근할 수 있습니다.
예제를 보겠습니다:
<?php
class Diary {
private $secretThought;
public function writeThought($thought) {
$this->secretThought = $thought;
}
public function readThought() {
return $this->secretThought;
}
}
$myDiary = new Diary();
$myDiary->writeThought("I love PHP!");
echo $myDiary->readThought(); // 출력: I love PHP!
// 이 부분은 오류를 일으킬 것입니다:
// echo $myDiary->secretThought;
?>
이 예제에서 $secretThought
은 private입니다. 우리는 그것을 클래스 외부에서 직접 접근할 수 없지만, public 메서드 writeThought()
과 readThought()
를 사용하여 상호작용할 수 있습니다.
Private 사용 시기
클래스의 내부 작동을 숨기고 싶을 때 private을 사용하세요. 민감한 데이터나 복잡한 연산이 외부에서 간섭받지 않도록 하기에 적합합니다.
Protected 회원
가족 앨범
Protected 회원은 마치 가족 앨범처럼 - 오직 가족(클래스와 그의 자식들)만이 볼 수 있습니다. 무언가를 protected로 선언하면, 그것은 동일한 클래스 내와 그를 상속받은 클래스 내에서 접근할 수 있습니다.
예제를 보겠습니다:
<?php
class Animal {
protected $species;
protected function setSpecies($species) {
$this->species = $species;
}
}
class Dog extends Animal {
public function woof() {
$this->setSpecies("Canine");
echo "Woof! I'm a " . $this->species;
}
}
$myDog = new Dog();
$myDog->woof(); // 출력: Woof! I'm a Canine
// 이 부분은 오류를 일으킬 것입니다:
// echo $myDog->species;
?>
이 예제에서 $species
와 setSpecies()
은 protected입니다. Dog
클래스는 Animal
을 상속받았기 때문에 이를 접근할 수 있지만, 우리는 이를 직접 외부에서 접근할 수 없습니다.
Protected 사용 시기
자식 클래스에 접근을 허용하되 외부 세계에서 숨기고 싶을 때 protected를 사용하세요. 기본 클래스에 공통된 기능을 만들어 자식 클래스가 확장할 수 있도록 하는 데 유용합니다.
접근 제한자 비교
다음 표는 차이점을 요약합니다:
접근 제한자 | 클래스 | 자식 클래스 | 외부 |
---|---|---|---|
Public | ✔️ | ✔️ | ✔️ |
Protected | ✔️ | ✔️ | ❌ |
Private | ✔️ | ❌ | ❌ |
결론
이제 PHP 접근 제한자의 세계로 첫 걸음을 뗐습니다. 기억해 두세요:
- Public은 모두에게 열려 있습니다
- Private은 오직 클래스 자신에게만 열려 있습니다
- Protected는 클래스와 그의 자식들에게 열려 있습니다
PHP 여정을 계속하면서 접근 제한자를 적절히 사용하면 코드가 더 안전하고, 더 정리되고, 유지보수가 더 쉬워집니다. 집을 짓는 것처럼 - 손님에게 열려 있는 방, 가족과 공유하는 방, 그리고 오직 자신만이 사용하는 방이 있어야 합니다.
계속 연습하면 접근 제한자 마스터가 될 거예요! 행복하게 코딩하세요!
Credits: Image by storyset