LoginSignup
5
3

More than 3 years have passed since last update.

【PHP】学習メモ / アクセサメソッド(セッター、ゲッターの目的と使い方)

Posted at

「変数の値に直接アクセスできるようにするのは良くない。アクセサメソッドを使えば間接的にアクセスするようにできる」みたいなことをどこかで学んだが、結局アクセスしてんじゃん、と思ったので具体的に何ができるのか一歩踏み込んで調べてみた。

アクセサメソッドの意味と使う目的

プロパティのアクセス権を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なので直接アクセス不可
}
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3