クラスでのカプセル化

プロパティへのアクセス権を制限する

プロパティをprivateで定義すると、クラスの外部からアクセス不可能になる(そのクラスのメソッドでしかアクセスできなくなる)。

目的
  • アクセスの手段を当該クラスのゲッターメソッドとセッターメソッドに限定する。それらに明示的な型宣言やバリデーションを施すことで不正値の読み書きを防ぐ。
  • (ゲッターメソッドだけを用意することで)プロパティを読み取り専用にする。
<?php
class Menu {
  // プライベートなプロパティ
  private $name;
  
  public function __construct($name) {
    $this->name = $name;
  }
  
  // ゲッターメソッドの定義
  public function getName(): string { // 型宣言
    return $this->name;
  }
  // セッターメソッドの定義
  public function setName($string): string { // 型宣言
    if (mb_strlen($string) < 16) { // 文字数制限
      $this->name = $string;
    }
  }
}
?>