현재 위치: > 최신 기사 목록> PHP 권한 수정자에 대한 자세한 설명: 공개, 보호, 비공개 및 최종 사용법을 숙지하세요.

PHP 권한 수정자에 대한 자세한 설명: 공개, 보호, 비공개 및 최종 사용법을 숙지하세요.

M66 2025-10-13

PHP 권한 제어 개요

웹 애플리케이션 개발에서 권한 제어는 보안을 보장하는 중요한 부분입니다. PHP는 클래스, 속성 및 메서드에 대한 액세스를 제어하기 위한 다양한 권한 수정자를 제공합니다. 이 기사에서는 이러한 수정자의 기능을 자세히 분석하고 샘플 코드를 사용하여 이를 적용하는 방법을 보여줍니다.

공개 수정자

Public은 PHP의 가장 기본적인 수정자로서 클래스, 속성 및 메서드에 어디에서나 액세스할 수 있음을 나타냅니다. public으로 선언된 멤버는 클래스 외부의 코드로 직접 호출할 수 있습니다. 예를 들어:

 class Car {
    public $color; // public재산
    public function drive() { // public방법
        echo "Driving";
    }
}

위 코드에서 Car 클래스의 $color 속성과drive() 메서드는 모두 공개이므로 모든 개체에서 액세스할 수 있습니다.

 $myCar = new Car();
$myCar->color = "red"; // 입장public재산
$myCar->drive(); // 부르다public방법

보호된 수정자

protected 한정자는 클래스 자체와 해당 하위 클래스 내에서만 속성이나 메서드에 액세스할 수 있음을 나타냅니다. 클래스 외부에서 직접 호출할 수 없습니다. 예를 들어:

 class Car {
    protected $color; // protected재산
    protected function drive() { // protected방법
        echo "Driving";
    }
}

하위 클래스는 상위 클래스의 보호된 멤버에 액세스할 수 있습니다.

 class SportsCar extends Car {
    public function set_color($color) {
        $this->color = $color; // 입장protected재산
    }
}

$sportsCar = new SportsCar();
$sportsCar->set_color("blue"); // 부르다public방법

개인 수정자

Private은 가장 엄격한 액세스 수정자로서 클래스 내에서만 액세스를 허용합니다. Private 멤버는 클래스 외부에서 액세스하거나 호출할 수 없습니다. 예를 들어:

 class Car {
    private $mileage; // private재산
    private function update_mileage() { // private방법
        $this->mileage++;
    }
}

클래스 외부의 비공개 멤버에 액세스하면 오류가 발생합니다.

 $myCar = new Car();
$myCar->mileage = 1000; // 실수
$myCar->update_mileage(); // 실수

최종 수정자

final 수정자는 클래스 및 메서드에 사용되어 상속되거나 재정의될 수 없음을 나타낼 수 있습니다. 클래스나 메서드가 수정되지 않았는지 확인하는 데 사용됩니다. 예를 들어:

 class Car {
    final public function drive() { // final방법
        echo "Driving";
    }
}

class SportsCar extends Car {
    public function drive() { // 오류를 보고합니다
        echo "Driving fast";
    }
}

final을 사용하면 중요한 메서드나 클래스가 변경되지 않은 상태로 유지되어 코드의 안정성과 보안이 향상됩니다.

요약

이 문서에서는 PHP와 해당 애플리케이션에서 일반적으로 사용되는 권한 수정자를 소개합니다.

  • 공개: 어디서나 액세스 및 호출을 허용합니다.
  • protected: 클래스와 해당 하위 클래스만 액세스하고 호출할 수 있습니다.
  • 비공개: 클래스 내에서만 액세스 및 호출을 허용합니다.
  • final: 멤버가 서브클래스에 의해 수정되는 것을 방지

이러한 수정자의 사용을 익히면 권한 제어 및 코드 구조 설계를 효과적으로 달성하고 애플리케이션의 보안 및 유지 관리성을 향상시키는 데 도움이 될 수 있습니다.