PHP 객체 지향 프로그래밍에서 세터와 게터의 장점
이전 강의에서 우리는 각 속성에 대해 게터와 세터를 만들었습니다. 속성을 비공개 대신 공개로 만들면 사실상 동일한 효과를 얻을 수 있는데, 왜 이런 복잡함이 필요한지 의문이 생길 수 있습니다.
그 이유는 게터와 세터가 장점을 가지고 있기 때문입니다: 속성에 접근하기 전에 몇 가지 검사를 수행할 수 있습니다. 예를 들어, 우리의 경우 이름과 성을 기록할 때 새 값이 빈 문자열이 아닌지 확인할 수 있습니다:
<?php
class User {
private $name;
private $surn;
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'name is incorrect';
}
}
public function setSurn($surn) {
if (strlen($surn) > 0) {
$this->surn = $surn;
} else {
echo 'surn is incorrect';
}
}
public function getName() {
return $this->name;
}
public function getSurn() {
return $this->surn;
}
}
?>
이것이 어떻게 작동하는지 테스트해 봅시다. 먼저 클래스의 객체를 생성하겠습니다:
<?php
$user = new User();
?>
이제 올바른 값을 기록해 보겠습니다:
<?php
$user->setName('john');
?>
이제 올바르지 않은 값을 기록해 보겠습니다:
<?php
$user->setName(''); // 오류
?>
Employee 클래스의 나이 세터에서
나이가 0세부터 120세 사이여야 한다는
검사를 구현하세요.
Employee 클래스의 급여 게터에서
급여를 읽을 때 그 값 끝에 달러 기호가 추가되도록 만드세요.