オブジェクト指向-カプセル化

カプセル化とはクラス内の変数やメソッドなど外部からアクセスできる物を
"カプセルで覆う事で遮断する”事を意味します。

カプセル化の利点「保守の強化」

カプセル化する事で保守性を強め、メンテナンスの簡略化が期待できる。

アクセス修飾子がpublicの場合
<?php
//フィールドがpublicの場合
class Capsule01{
	public $name;
	}

$csl01 = new Capsule01();
$csl01->name ="チョコレィト";

if($csl01->name == ''){
	$csl01->name = "商品名が登録されていません!";
	}

echo '商品名は'.$csl01->name.'です。';
?>

●出力結果
商品名はチョコレィトです。

デメリットは、public修飾子だとインスタンスが発生する毎に、修正のコード(商品名が未登録のパターン)を記述しなければならない。

この手間をなくすには...

アクセス修飾子がprivateの場合
<?php
class capusule02{
	private $name;
	
	public function setName($name){
		$this->name = $name;
		}
	
   public function getName(){
         if ($this->name == '') {
            return "商品名が登録されていません!";
        } else {
            return $this->name;
        }
    }
}

$csl02 = new capusule02();

$csl02->setName('');
$csl02_name = $csl02->getName();
echo '商品名は'.$csl02_name.'です。';

●出力結果
商品名は商品名が登録されていません!です。
?>

クラス内のフィールドを書き足すだけで用が足りるので保守性やメンテナンス効率が上がる。