현재 위치: > 최신 기사 목록> PHP의 오류 문제를 해결하는 방법 개인 속성에 액세스하는 방법

PHP의 오류 문제를 해결하는 방법 개인 속성에 액세스하는 방법

M66 2025-07-26

PHP의 개인 속성에 액세스하는 오류 문제를 해결하십시오

PHP 프로그래밍에서는 종종 개인 속성에 액세스 할 때 발생하는 오류가 발생합니다. 개인 속성은 클래스에서 내부적으로 정의되며 클래스에서만 내부적으로 액세스 할 수 있습니다. 비공개 속성에 외부에 액세스하면 오류가 발생합니다. 이 기사는 몇 가지 일반적인 솔루션을 살펴볼 것입니다.

예 : 개인 속성에 액세스 할 때 오류가 발생했습니다

먼저 간단한 예제 코드를 살펴 보겠습니다.

 class Person {
     private $name = "John";
     public function getName() {
         return $this->name;
     }
 }
 $person = new Person();
 echo $person->name; // 개인 속성에 액세스하십시오,오류를보고하십시오

위의 코드는 개인 속성 $ 이름과 공개 메소드 getName을 포함하는 클래스 이름을 정의하여 $ 이름의 값을 반환합니다. 클래스 밖에서 직접 $ 이름에 액세스하려고하면 PHP가 오류를보고합니다.

해결책 : 공개 방법을 제공합니다

이 문제를 해결하기 위해 수업 내에서 공개 방법을 제공하여 개인 속성에 액세스 할 수 있습니다. 공개 setName 메소드를 추가하여 사유지의 값을 설정할 수 있습니다.

 class Person {
     private $name = "John";
     public function getName() {
         return $this->name;
     }
     public function setName($newName) {
         $this->name = $newName;
     }
 }
 $person = new Person();
 echo $person->getName(); // 산출 "John"
 $person->setName("Tom");
 echo $person->getName(); // 산출 "Tom"

이 솔루션에서는 Person 클래스에 SetName 메소드를 추가하여 사유지의 값을 직접 개인 재산에 액세스하지 않고 노출 된 방법을 통해 설정할 수 있도록합니다.

다른 방법 : 마법 방법을 사용하십시오

공개 방법을 통해 개인 속성에 액세스하고 수정하는 것 외에도 Magic Methods __get 및 __ 세트를 사용하여 개인 속성에 대한 액세스를 처리 할 수 있습니다. 다음은 마법 방법을 사용하는 예입니다.

 class Person {
     private $name = "John";
     public function __get($property) {
         if (property_exists($this, $property)) {
             return $this->$property;
         }
     }
     public function __set($property, $value) {
         if (property_exists($this, $property)) {
             $this->$property = $value;
         }
     }
 }
 $person = new Person();
 echo $person->name; // 산출 "John"
 $person->name = "Tom";
 echo $person->name; // 산출 "Tom"

Magic Methods __get 및 __set을 구현하면 개인 속성에 액세스 할 때 이러한 방법을 자동으로 호출하여 개인 속성에 직접 액세스하지 않고도 및 수정을 허용 할 수 있습니다.

참고 :주의해서 사용하십시오

이러한 방법은 사유지 액세스 오류의 문제를 해결할 수 있지만 이러한 방법을 과도하게 사용하면 클래스의 캡슐화가 파괴 될 수 있습니다. 캡슐화는 객체 지향 프로그래밍의 기본 원칙으로 코드의 유지 관리 및 확장 성을 향상시킵니다. 따라서 클래스를 설계 할 때는 클래스의 내부 구현이 외부 소스에 의해 직접 작동하지 않도록 개인 속성을 직접 노출하지 않도록 노력해야합니다.

요약

PHP에서 개인 속성에 액세스하여 발생하는 오류 문제를 해결하기 위해 공개 방법을 제공하고 마법 방법 __get 및 __ 세트를 사용하여 개인 속성에 간접적으로 액세스 할 수 있습니다. 동시에, 우리는 클래스의 캡슐화가 깨지지 않도록하여 코드의 유지 관리를 유지하기 위해 이러한 방법을주의해서 사용해야합니다.