togatttiのエンジニアメモ

過度な期待はしないでください.

Interface,Implementsを使う利点って何?【PHPのInterface】

PHPでInterface, implements というのがよくわからないまま、放置してきたので、そろそろ解明していきたい。

ちなみに

オブジェクトインターフェイスにより、あるクラスが実装する必要があるメソッドの 種類を、 これらのメソッドの実体を定義することなく、指定するコードを作成できるようになります

オブジェクト インターフェイス-Manual

と説明されている。

 

よくわからない。そして、コードはこんな感じ。

 

 

同じメソッドを2回書いてるから、手間かかる。

では、どのような意味、利点があるのか。

 

ざざっと書いていくと、次の3つ。

 

  • インターフェイス内のメソッドが用意されていることが保証されている。クラスのメソッドをあらかじめ把握しやすくなる。
  • メソッドがクラスで明示されていないときにエラーを表示してくれるようになる。メソッドの記述漏れを防ぐ。規模が大きくなればなるほど、漏れによる事故が起きる確率は高くなるので効果的。
  • PHP5.4からインターフェイスを引数の型に指定できるようになった。タイプヒンティングによる機能保証といった効果がある。

 

そのため、インターフェイスはクラス使用者に対して安心して、クラスのメソッドを呼び出すことを保証している。そしてインターフェイスはある特定のメソッド群の概要を記述したもの。だから、クラスの仕様書みたいな使い方もできる。

 

例えばこんな感じ。

 

 

必要不可欠なメソッドを定義しておいて、あとでクラスで中身を書く。

 

正直、普段の開発ではあまり使わない気もする。むしろinterface使ったら、他の人が混乱したりしないかとも思う。まっ、とりあえず解消できた。

 

参考