PHP 객체 지향 프로그래밍 소개: 액세스 한정자를 사용하여 객체의 속성과 메서드를 보호하는 방법
PHP에서 객체 지향 프로그래밍(OOP)은 매우 일반적이고 강력한 프로그래밍 방법입니다. 이러한 방식으로 엔터티를 객체로 추상화하고 해당 속성과 메서드를 정의하여 해당 동작을 설명할 수 있습니다. 그러나 때로는 내부 상태와 일부 주요 메서드를 보호하기 위해 객체에 대한 액세스를 제한해야 할 때도 있습니다. 이러한 목적을 위해 PHP는 이러한 목적을 달성하는 데 도움이 되는 액세스 수정자를 제공합니다.
PHP에는 공개, 비공개, 보호라는 세 가지 일반적으로 사용되는 액세스 수정자가 있습니다. 다양한 액세스 한정자는 외부 세계에 대한 객체 속성 및 메서드의 가시성과 접근성을 정의합니다. 아래에서는 이 세 가지 접근 수정자의 사용법을 자세히 소개합니다.
공개 액세스 수정자는 가장 일반적인 수정자입니다. 즉, 객체의 속성과 메서드를 어디에서나 액세스하고 호출할 수 있습니다. 액세스 수정자를 정의하지 않은 경우 기본값은 공용 액세스 수정자입니다.
일반적으로 클래스의 속성은 private 또는 protected로 정의하고, 메소드는 public으로 정의하여 외부 코드가 해당 메소드를 통해 객체의 속성에 접근하고 조작할 수 있도록 합니다. 다음은 공개 액세스 수정자를 사용하는 예입니다.
class Person { public $name; public function sayHello() { echo "Hello, my name is ".$this->name; } } $person = new Person(); $person->name = "John"; $person->sayHello(); // 输出 "Hello, my name is John"
위 코드에서는 $name
속성과 sayHello( )를 사용하여 <code>Person
클래스를 정의합니다. 메서드는 모두 공개됩니다. $name
을 공용 속성으로 설정하면 외부 코드에서 속성 값을 직접 수정하고 액세스할 수 있습니다. sayHello()
메서드는 객체를 인스턴스화하고 메서드를 호출하여 외부 코드로 인사말을 인쇄할 수 있습니다. Person
类,其中$name
属性和sayHello()
方法都是公有的。通过将$name
设置为公有属性,外部代码可以直接修改和访问该属性的值。而sayHello()
方法可以在外部代码中通过实例化对象并调用该方法来打印输出一条问候语。
私有访问修饰符表示对象的属性和方法只能在所属的类内部访问和调用,外部代码无法直接访问。为了访问私有属性和方法,我们需要使用类内部定义的公有方法。下面是一个使用私有访问修饰符的示例:
class Person { private $name; public function setName($name) { $this->name = $name; } public function sayHello() { echo "Hello, my name is ".$this->name; } } $person = new Person(); $person->setName("John"); $person->sayHello(); // 输出 "Hello, my name is John"
在上面的代码中,$name
属性被定义为私有的,外部代码无法直接访问。为了对该属性赋值,我们定义了一个公有的setName($name)
方法,并在其中通过方法内部访问私有属性来设置其值。同样,sayHello()
方法可以在外部代码中通过实例化对象并调用该方法来打印输出问候语。
受保护访问修饰符表示对象的属性和方法只能在所属的类及其子类中访问和调用,外部代码无法直接访问。和私有访问修饰符类似,为了访问受保护的属性和方法,我们也需要使用类内部定义的公有方法。下面是一个使用受保护访问修饰符的示例:
class Person { protected $name; public function setName($name) { $this->name = $name; } public function sayHello() { echo "Hello, my name is ".$this->name; } } class Student extends Person { public function study() { echo $this->name." is studying."; } } $student = new Student(); $student->setName("John"); $student->sayHello(); // 输出 "Hello, my name is John" $student->study(); // 输出 "John is studying."
上面的代码中,Person
类的$name
属性被定义为受保护的,而Student
类继承了Person
类。在Student
类内部,我们可以直接访问和调用继承自Person
类的受保护属性和方法。在外部代码中,我们通过实例化Student
$name
속성은 private으로 정의되어 외부 코드에서 직접 접근할 수 없습니다. 이 속성에 값을 할당하기 위해 공개 setName($name)
메서드를 정의하고 메서드 내부의 비공개 속성에 액세스하여 값을 설정합니다. 마찬가지로 외부 코드에서 sayHello()
메서드를 사용하면 개체를 인스턴스화하고 메서드를 호출하여 인사말을 인쇄할 수 있습니다. 🎜Person
클래스의 $name
속성은 protected로 정의되어 있지만 Student
클래스는 Person
클래스를 상속합니다. Student
클래스 내에서 Person
클래스에서 상속된 보호된 속성과 메서드에 직접 액세스하고 호출할 수 있습니다. 외부 코드에서 Student
개체를 인스턴스화하고 정의된 공개 메서드를 호출하여 보호된 속성과 메서드에 액세스하고 호출합니다. 🎜🎜액세스 한정자를 사용하면 객체의 액세스 권한을 더 잘 제어하고 불합리한 액세스 및 작업을 피할 수 있습니다. 실제 개발에서는 필요와 디자인 원칙에 따라 액세스 수정자를 합리적으로 선택하고 사용해야 합니다. 이 글이 여러분이 PHP의 접근 한정자를 이해하고 사용하는 데 도움이 되기를 바랍니다! 🎜위 내용은 PHP 객체 지향 프로그래밍 소개: 액세스 한정자를 사용하여 객체 속성 및 메서드를 보호하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!