2010-12-30 3 views
0

동적 클래스가 $row->attributes()으로 참조되어 있습니다. 동적 클래스에는 동적으로 일치하는 몇 가지 오버로드 된 (동적) 속성이 있습니다. $row->attributes()->property1.동적 PHP 객체의 속성 설정 해제

property1의 설정을 해제하고 싶습니다. 나는 $row->attributes()->__unset("property1")unset($row->attributes()->property1)을 시도했다. 기쁨이 없습니다.

누구든지이 작업을 수행하는 방법을 알고 있습니까?

+0

개체 속성에 대한 설정을 해제하는 것이 얼마나 좋은지 (또는 가능한 경우에도) 잘 모르겠습니다. 값을 null로 설정하지 않는 이유는 무엇입니까? 그 재산이 완전히 소멸되어야하는 이유는 무엇입니까? –

+0

XML 태그의 속성을 연관 배열로 변환하는 함수를 작성합니다. 사용자에게 속성 값으로부터 해당 배열에 대한 키를 설정하는 옵션을 제공하고 해당 배열에서 속성을 제거하려고합니다. – bcoughlan

+0

'SimpleXMLElement'을 사용하고 있습니까 (아니면 확장하고 있습니까?)? – salathe

답변

2

이 접근법을 사용했는지 여부는 분명하지 않습니다.있는 경우이 답을 제거하겠습니다.

__unset에서 봐, 간단한 예는 다음과 같습니다

class Foo 
{ 
    public function __unset($property) 
    { 
     unset($this->__my_property_holder[$property]); 
    } 
} 

당신은 단순히 unset($row->attributes()->property1)을 할 필요가 있고, 실제로 Foo->__unset('property1')를 호출합니다.

+0

매우 똑똑합니다. 그것은 거의 마술과 같습니다. +1 – Abinadi

+0

답이 맞지만이 경우 클래스는 PHP 소스 코드 (SimpleXMLElement)에 내장되어 있으므로 수정할 수 없습니다. 아마도 구현 오류 일 것입니다. – bcoughlan