클래스 멤버를 선언하는 것은 당신의 최선의 방법이다. 그래도 문제가 해결되지 않으면 오류를 발생 시킬지 여부를 결정하는 스위치 ($this->isInConstructor
?)를 사용할 수 있습니다.
class Foo
{
private $library;
private $trustedValues;
public function __construct(array $values)
{
$this->trustedValues = array('foo', 'bar', 'baz');
$this->library = new stdClass();
foreach($values as $key=>$value)
{
$this->library->$key = $value;
}
}
public function __get($key)
{
return $this->library->$key;
}
public function __set($key, $value)
{
if(in_array($key, $this->trustedValues))
{
$this->library->$key = $value;
}
else
{
throw new Exception("I don't understand $key => $value.");
}
}
}
:
한편
, 당신은 또한 포장 라이브러리에 매핑 __get
방법뿐만 아니라 __set
방법을 사용하고 둘 다 가질 수