PHP OOP에서 존재하지 않는 속성 읽기
존재하지 않는 속성에 데이터를 기록해 보겠습니다. 이것은 작동할 것입니다:
<?php
$test = new Test;
$test->prop3 = 3; // 3을 기록합니다
echo $test->prop3; // 3을 출력합니다
?>
우리가 존재하지 않는 속성에 쓰는 것을 허용하지 않기 원한다고 가정해 봅시다.
그리고 일반적으로 prop1 및 prop2 속성에만 쓰기를 허용하기를 원합니다.
이것은 쉽게 할 수 있습니다 - __set 메서드에서
해당 조건을 추가하는 것으로 충분합니다:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// 조건을 작성합니다:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
그러한 속성이 많다면 조건에 모두 나열하는 것은 그다지 편리하지 않습니다.
쓰기가 허용된 속성을 배열에 기록하고
in_array 함수를 사용하여 해당 배열에 속성이
있는지 확인해 보겠습니다:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // 허용된 속성들
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>