2010-06-20 4 views
4

PHP에서 __set 액세서 함수를 사용하면 스칼라 값을 설정할 수 있지만 배열 요소는 설정할 수 없습니다. 즉 다음과PHP 액세서 함수 및 배열

$p->scalavar = "Hello"; // This works fine 
$p->myarray['title'] = "Hello"; //This does not work 

내 접근이 될 때 :

function __set($mbr_name, $mbr_value) { 
    $this->$mbr_name = $mbr_value; 
} 

감사합니다!

답변

9
$p->myarray['title'] = "Hello"; 

이 방법은 __set 마법 메서드가 아닙니다. 당신은 부동산을 정확히 정하지 못하고, 부동산의 일부를 바꾸고 있습니다. 이 경우 PHP는 __get 메서드를 호출하여 해당 마법 메서드가있는 경우 $p->myarray 속성에 저장된 배열을 검색합니다. 반환 값을 변경하여 속성에 영향을 주려면 참조로 반환해야합니다.

function &__get($mbr_name) { 
    return $this->$mbr_name; 
}