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 クラスの給与ゲッターで、
給与を読み取る際に、その値の末尾に
ドル記号が追加されるようにしてください。