PHP 접근 제한자: 초보자 가이드

안녕하세요, 미래의 PHP 개발자 여러분! 오늘 우리는 PHP의 접근 제한자 세계로 뛰어들어 보겠습니다. 코드 한 줄도 적어본 적이 없더라도 걱정 마세요 - 이 여정에서 여러분의 친절한 안내자가 될게요. 이 튜토리얼이 끝나면 접근 제한자를 마스터하듯 사용할 수 있을 거예요!

PHP - Access Modifiers

접근 제한자는 무엇인가요?

먼저 접근 제한자가 무엇인지 이해해 보겠습니다. 접근 제한자는 코드의 경비원이라고 생각해 보세요. 그들은 프로그램의 다른 부분을 볼 수 있고 사용할 수 있는 사람을 kontroll합니다. PHP에서는 세 가지 주요 접근 제한자가 있습니다:

  1. Public
  2. Private
  3. 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;
?>

이 예제에서 $speciessetSpecies()은 protected입니다. Dog 클래스는 Animal을 상속받았기 때문에 이를 접근할 수 있지만, 우리는 이를 직접 외부에서 접근할 수 없습니다.

Protected 사용 시기

자식 클래스에 접근을 허용하되 외부 세계에서 숨기고 싶을 때 protected를 사용하세요. 기본 클래스에 공통된 기능을 만들어 자식 클래스가 확장할 수 있도록 하는 데 유용합니다.

접근 제한자 비교

다음 표는 차이점을 요약합니다:

접근 제한자 클래스 자식 클래스 외부
Public ✔️ ✔️ ✔️
Protected ✔️ ✔️
Private ✔️

결론

이제 PHP 접근 제한자의 세계로 첫 걸음을 뗐습니다. 기억해 두세요:

  • Public은 모두에게 열려 있습니다
  • Private은 오직 클래스 자신에게만 열려 있습니다
  • Protected는 클래스와 그의 자식들에게 열려 있습니다

PHP 여정을 계속하면서 접근 제한자를 적절히 사용하면 코드가 더 안전하고, 더 정리되고, 유지보수가 더 쉬워집니다. 집을 짓는 것처럼 - 손님에게 열려 있는 방, 가족과 공유하는 방, 그리고 오직 자신만이 사용하는 방이 있어야 합니다.

계속 연습하면 접근 제한자 마스터가 될 거예요! 행복하게 코딩하세요!

Credits: Image by storyset