2017-10-27 1 views
0

나는 마법 방법 __GET 및 __SET을 (를) 배우려고합니다. 지금은 __GET 메서드를 사용하고 있습니다.

그리고 개인 속성에 액세스 할 수 없음 오류가 표시됩니다. 내가 무슨 일이 일어나고 있는지 확실하지 않다

<?php 

    class getset { 

    private $name; 

    public function __set($property, $value) { 
     if((property_exists($this, $property))) { 
     $this->$property = $value; 
     echo "Successfully updated {$property} to {$value}"; 
     } else { 
     echo "This failed."; 
     } 
    } 

    } 

    getset::$name = 'Thomas'; 

?> 

:

여기 내 코드입니다. __SET 함수에서 매개 변수를 살펴 봤는데 제대로 따라 간 것 같습니다.

나는 무슨 일이 일어나고 있는지 잘 모르겠다.

Fatal error: Uncaught Error: Undefined class constant 'name' in C:\xampp\htdocs\OOP Lessons\Classes\getset.inc.php:22 Stack trace: #0 {main} thrown in C:\xampp\htdocs\OOP Lessons\Classes\getset.inc.php on line 22

그 라인은 다음과 같습니다 :

<?php 
     class getset { 

     private $name; 

     public function __set($property, $value) { 
      if((property_exists($this, $property))) { 
      $this->$property = $value; 
      echo "Successfully updated {$property} to {$value}"; 
      } else { 
      echo "This failed."; 
      } 
     } 

     } 
    $newObj=new getset(); 
    $newObj->name='Thomas'; 
    print_r($newObj); 
?> 

// 출력 :

Successfully updated name to Thomas 

    getset Object 
    (
     [name:getset:private] => Thomas 
    ) 
+0

다음

getset::$name = 'Thomas'; 

+1

Private 속성은 클래스 외부에서 액세스 할 수 없으므로 private –

+0

@PraveenM을 호출했습니다. 죄송합니다. 내 코드 세트는'getset :: $ name = 'Thomas';'편집했습니다. –

답변

1

당신에게 도움이 될 수 있습니다 예입니다 여기 내 전체 코드입니다 `$ name`에 값을 할당하고 있습니까?
+0

확인. 정말 고마워. 나는 실수로 스코프 분해능 연산자를 사용했다. 나는 그들과 포인터의 차이점을 찾아야 할 것이다. 정말 고마워! –

관련 문제