웹 애플리케이션 개발에서 권한 제어는 보안을 보장하는 중요한 부분입니다. 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와 해당 애플리케이션에서 일반적으로 사용되는 권한 수정자를 소개합니다.
이러한 수정자의 사용을 익히면 권한 제어 및 코드 구조 설계를 효과적으로 달성하고 애플리케이션의 보안 및 유지 관리성을 향상시키는 데 도움이 될 수 있습니다.