カプセル化とは?
カプセル化とは、クラスのプロパティとメソッドへのアクセスを制限すること。
publicとprivateを用いて定義する。
privateとpublic
クラスの外部からアクセスできるようにするには「public」を、アクセスできないようにするには「private」を用いて定義する。
プロパティは基本的にアクセス権をprivateにする。
class Menu {
private $name;
}
$fruits = new Menu('apple');
echo $fruits->name; // $nameがprivateのためエラーとなる。
ゲッターとは??
上記のように、privateにするとプロパティの値をクラスの外から取り出すことができなくなる。
そのため、プロパティの値を返すだけのメソッドを定義する必要がある。
このような、プロパティの値を返すだけのメソッドを特に「ゲッター」という。
ゲッターは「getプロパティ名」のように命名するのが一般的である。
class Menu {
private $name;
public function __construct($name) {
$this->name = $name; // class内なのでこの書き方でアクセスができる
}
public function getName() {
return $this->name; // class内なのでこの書き方でアクセスができる
}
}
$fruits = new Menu('apple');
echo $fruits->getName();
セッターとは??
プロパティのアクセス権をprivateにするとプロパティの値をクラスの外から変更できなくなる。
そのため、プロパティの値を変更するメソッドを定義する必要がある。
このような、プロパティの値を変更するメソッドを特に「セッター」という。
セッターは「setプロパティ名」のように命名するのが一般的である。
class Menu {
private $fruitsCount;
public function setFruitsCount($fruitsCount) {
$this->fruitsCount= $fruitsCount;
}
}
$fruits = new Menu('apple','strawberry','melon', ...);
$fruits->setFruitsCount(4); // セッターを用いて値をセット。
echo $fruits->setFruitsCount(); // 結果:4
$fruits->fruitsCount= 6; // privateなので直接アクセスはできない!