「変数の値に直接アクセスできるようにするのは良くない。アクセサメソッドを使えば間接的にアクセスするようにできる」みたいなことをどこかで学んだが、結局アクセスしてんじゃん、と思ったので具体的に何ができるのか一歩踏み込んで調べてみた。
アクセサメソッドの意味と使う目的
プロパティのアクセス権をprivateにするとプロパティの値をクラスの外から変更できなくなる。
アクセス権について
セッター:プロパティの値を変更するメソッド
ゲッター:プロパティの値を読み出すメソッド
public :
どんなデータでも直接入れられる
privateでアクセサメソッドを経由 :
setする時チェックが可能で、不正なデータは外部から格納できないようにする事ができる。
アクセサメソッドを使うことにより、受け入れられるデータだけを通す事ができる。つまり、フィルタリングできるということらしい。例えば、成績がA〜Eまであるとして、「A〜Eのアルファベットのデータのみ受け入れる」とすれば、Fという不正なデータは受け取らないで済む。その他、「読み取るだけ」のアクセサメソッドを作ることにより「データは見れるが、更新はできない」ということもできる。
class Menu{
private $price;
public function setPrice($price){
$this->price = $price;
}
$coffee = new Menu();
$coffee->setPrice(300);
echo $coffee->getPrice(); //300
$coffee->price = 500; //privateなので直接アクセス不可
}