もくじ
使いどころ
- 一度生成したインスタンスに対して変更をさせない
- 外部からインスタンスを生成させない。Robot::creteRedRobot(), Robot::createBlueRobot()からのみ生成が可能
<?php class Robot { private $name = ''; private $color; public static function createRedRobot($name_){ return new self($name_, 'red'); } public static function createBlueRobot($name_){ return new self($name_, 'blue'); } // constructをprivateにしているのが大事。 // createRedRobot(), createBlueRobot()からのみインスタンスを生成できる private function __construct($name_, $color_){ $this->setName($name_); $this->color = $color_; } public function setName($name_){ $this->name = (string) $name_; } public function getName(){ return $this->name; } public function getColor(){ return $this->color; } } $yuuRobot = Robot::createRedRobot('優ロボット'); echo $yuuRobot->getName(); // 優ロボット echo $yuuRobot->getColor(); // red $yuuRobot->__construct('優ロボット', 'yellow'); // 無効 echo $yuuRobot->getColor(); // 表示されない $yuuRobot = Robot::createBlueRobot('優2ロボット'); // 無効 上書きされない echo $yuuRobot->getName(); // 表示されない echo $yuuRobot->getColor(); // 表示されない $yuu3Robot = Robot::createBlueRobot('優3ロボット'); // 無効 上書きされない echo $yuu3Robot->getName(); // 表示されない echo $yuu3Robot->getColor(); // 表示されない
表示
優ロボットred
- constructをprivateにしているのが重要
- static functionで指定したcreateRedRobot(), createBlueRobot()からのみインスタンスを生成できる
- 一度作ったインスタンスに対して、プロパティを上書きさせない
- インスタンスは1つ