概要
この記事はPHP Advent Calendar 2018の記事です。(ちょっと早めに投稿しています)
インターフェースはメソッドの実装を保証する”契約”的意味合いの他、タイプヒンティングによって実装を抽象に依存させる(=実装の切り替えをしやすくする)こともできる。
インターフェースの定義・実装
基本的なインターフェースの定義と実装。
インターフェースによる機能と実装の分離
タイプヒンティングでインターフェース型を指定すると実装に柔軟性を持たせることができる。
Supermanの実装を取りやめて、Hypermanの実装に切り替える。
もし、Botクラスのdoメソッドがインターフェースではなく、Supermanクラスに依存していた場合、実装を交換する手間が増えてしまう。