なにか?
- 継承先クラスで、定義する必要があるメソッドを、定義のみする
なぜ使うか?
- 定義する必要があり、実装が呼び出し先で違う時、定義を強制することができる。
- 制約できるので、コード書きながら設計している気分になれる
サンプルコード
abstract.php
<?php
abstract class Working
{
abstract protected function where();
abstract protected function why();
abstract protected function how();
public function work()
{
echo $this->where($where);
echo $this->why($reason);
echo $this->how($how);
}
}
class Person extends Working
{
protected function where()
{
return '横浜で';
}
protected function why()
{
return 'お金欲しいから';
}
protected function how()
{
return '営業する';
}
}
$bob = new Person();
$bob->work(); // 横浜でお金欲しいから営業する
MORE
書いていて、これは便利なのでは、と思った。
継承元見た時に、処理フローがわかりやすい。