0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

publicとprivate、ゲッターとセッターについて

Posted at

カプセル化とは?

カプセル化とは、クラスのプロパティとメソッドへのアクセスを制限すること。
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なので直接アクセスはできない!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?