PHP

PHP カプセル化

neko

メンバ変数をprivateにすることで、生成したインスタンスのプロパティに直接アクセスさせない。

下記みたいにプロパティにアクセスして表示させたりしていると、この変数に対して何か加工をしようとした時に、表示させているすべての箇所をテストしたり、修正する必要が出てくるかもしれない!

$obj = new Product($data);
echo $obj->name; // プロパティにアクセスできちゃうの?

 

 

  • メンバ変数を表示させたい場合は、getName()など、表示させる用の関数にしておくと良い。
  • そうすればgetName()関数を修正するだけで全体の修正が出来る。

 

Product.class.php

<?php

class Product
{
    private $name;

    public function __construct($name)
    {
        $this->name = (string) $name;
    }


    public function getName()
    {
        return $this->name;
    }
}

 

index.php

<?php
require_once 'Product.class.php';


$data = "おこめ";

$obj = new Product($data);
echo $obj->getName();

 

/demo/Design-Pattern-Primer-by-PHP/Encapsulation/

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)