Interface,Implementsを使う利点って何?【PHPのInterface】
PHPでInterface, implements というのがよくわからないまま、放置してきたので、そろそろ解明していきたい。
ちなみに
オブジェクトインターフェイスにより、あるクラスが実装する必要があるメソッドの 種類を、 これらのメソッドの実体を定義することなく、指定するコードを作成できるようになります
オブジェクト インターフェイス-Manual
と説明されている。
よくわからない。そして、コードはこんな感じ。
同じメソッドを2回書いてるから、手間かかる。
では、どのような意味、利点があるのか。
ざざっと書いていくと、次の3つ。
- インターフェイス内のメソッドが用意されていることが保証されている。クラスのメソッドをあらかじめ把握しやすくなる。
- メソッドがクラスで明示されていないときにエラーを表示してくれるようになる。メソッドの記述漏れを防ぐ。規模が大きくなればなるほど、漏れによる事故が起きる確率は高くなるので効果的。
- PHP5.4からインターフェイスを引数の型に指定できるようになった。タイプヒンティングによる機能保証といった効果がある。
そのため、インターフェイスはクラス使用者に対して安心して、クラスのメソッドを呼び出すことを保証している。そしてインターフェイスはある特定のメソッド群の概要を記述したもの。だから、クラスの仕様書みたいな使い方もできる。
例えばこんな感じ。
必要不可欠なメソッドを定義しておいて、あとでクラスで中身を書く。
正直、普段の開発ではあまり使わない気もする。むしろinterface使ったら、他の人が混乱したりしないかとも思う。まっ、とりあえず解消できた。
参考