
メンバ変数を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/
![PHP Template Methodパターン [PHPによるデザインパターン入門]](https://www.yuulinux.tokyo/contents/wp-content/uploads/2017/09/phpDP_20190407_1-150x150.jpg)