>  기사  >  백엔드 개발  >  PHP 권한 제어 수정자의 비밀 공개: 실제 애플리케이션에서 사용 기술 익히기

PHP 권한 제어 수정자의 비밀 공개: 실제 애플리케이션에서 사용 기술 익히기

WBOY
WBOY원래의
2024-01-19 10:06:061321검색

PHP 권한 제어 수정자의 비밀 공개: 실제 애플리케이션에서 사용 기술 익히기

PHP는 웹 개발에 널리 사용되는 프로그래밍 언어입니다. 웹 애플리케이션을 개발할 때 권한 제어는 애플리케이션의 데이터 보안과 기능적 무결성을 보장할 수 있는 필수적인 부분입니다. PHP는 이 기사에서 설명할 다양한 권한 제어 수정자를 제공합니다.

권한 제어 수정자 소개

PHP에는 공개, 보호, 비공개의 세 가지 주요 권한 제어 수정자가 있습니다.

Public은 공개 액세스를 의미하며 해당 속성과 메서드는 클래스 내부와 외부 어디에서나 액세스할 수 있습니다.

protected는 보호된 액세스를 의미하며 해당 속성과 메서드는 현재 클래스와 하위 클래스에서 액세스할 수 있습니다.

private은 비공개 액세스를 의미하며 해당 속성과 메서드는 현재 클래스에서만 액세스할 수 있습니다.

위의 세 가지 권한 제어 수정자 외에 최종 및 정적 수정자도 있습니다.

final은 최종 클래스를 나타내며 해당 속성과 메서드는 상속될 수 없습니다.

static은 정적 클래스를 의미하며 해당 속성과 메서드는 클래스 내부와 외부 어디에서나 액세스할 수 있으며 클래스를 인스턴스화하지 않고도 사용할 수 있습니다.

권한 제어 구현 원칙

클래스의 속성과 메서드에는 가시성을 제한하는 수정자가 있어 권한 제어가 가능합니다.

PHP 파서는 수정자를 기반으로 액세스 권한을 결정합니다. 속성이나 메서드가 수정자를 정의하지 않으면 기본값은 공개입니다.

실전 응용에서의 사용 기술

이제 실제 응용 시나리오를 통해 권한 제어 수정자의 사용 기술을 마스터하겠습니다.

  1. 속성 변조 방지

많은 웹 애플리케이션에서 데이터의 무결성과 보안을 보장하기 위해 일부 속성을 제한하여 변조를 방지해야 합니다. 이는 개인 속성 수정자를 사용하여 달성할 수 있습니다.

다음은 예입니다.

class User {
    private $username;
    private $password;
    
    public function __construct($username, $password) {
        $this->username = $username;
        $this->password = $password;
    }
    
    public function getUsername() {
        return $this->username;
    }
    
    public function getPassword() {
        return $this->password;
    }
}

$user = new User('Tom', '123456');
$user->username = 'Jerry'; // 禁止修改
  1. 메서드 재정의 방지

어떤 경우에는 클래스의 메서드가 하위 클래스에 의해 재정의될 수 없기를 바랍니다. 이는 최종 속성 수정자를 사용하여 달성할 수 있습니다.

예는 다음과 같습니다.

class Animal {
    final public function move() {
        echo 'Moving...';
    }
}
 
class Dog extends Animal {
    // 错误示例
    public function move() {
        echo 'Running...';
    }
}

$dog = new Dog();
$dog->move(); // 输出 Moving...
  1. Protected 속성 액세스

특정 속성에 대한 액세스를 제한해야 하는 경우 protected 속성 수정자를 사용할 수 있습니다.

다음은 예입니다.

class Person {
    protected $name;
    
    public function __construct($name) {
        $this->name = $name;
    }
}

class Student extends Person {
    public function getName() {
        // 错误示例
        return $this->name;
    }
}

$student = new Student('Tom');
echo $student->getName(); // 输出空白,无法访问父类属性
  1. 제어된 액세스 달성

복잡한 애플리케이션에서는 특정 속성이나 메서드에 대해 더 자세한 액세스 제어가 필요합니다. 속성 값을 가져오거나 설정할 수 있습니다. 이를 통해 공용 메소드를 통해 속성 액세스를 제어할 수 있습니다.

다음은 그 예입니다.

class User {
    private $username;
    private $password;
    
    public function __construct($username, $password) {
        $this->username = $username;
        $this->password = $password;
    }
    
    public function setUsername($username) {
        // 禁止修改用户名
        if ($this->username === $username) {
            return false;
        }
        
        $this->username = $username;
        return true;
    }
    
    public function setPassword($password) {
        $this->password = $password;
    }
    
    public function getUsername() {
        return $this->username;
    }
    
    public function getPassword() {
        return $this->password;
    }
}

$user = new User('Tom', '123456');
$user->setUsername('Jerry'); // 禁止修改
$user->setPassword('654321');
echo $user->getUsername() . ':' . $user->getPassword(); // 输出 Tom:654321

요약

PHP 개발에서 권한 제어는 매우 중요한 부분입니다. 권한 제어를 통해 액세스 범위를 제어하고 데이터 보안을 보호하며 애플리케이션의 신뢰성과 안정성을 향상시킬 수 있습니다. . 이 기사에서는 PHP에서 일반적으로 사용되는 권한 제어 수정자를 소개하고 실제 애플리케이션 시나리오를 통해 이를 설명하고 시연합니다. PHP 개발자에게 도움이 되기를 바랍니다.

위 내용은 PHP 권한 제어 수정자의 비밀 공개: 실제 애플리케이션에서 사용 기술 익히기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.