現場でPHPのコードを見る中で、インターフェイスが実装されているケースがあるのですが、初心者に毛が生えたレベルのエンジニアの私には、よく分かっていないので、まとめてみました。
まずは公式よりの引用↓
0.公式よりの引用
オブジェクトインターフェイスにより、あるクラスが実装する必要があるメソッドの 種類を、これらのメソッドの実装を定義することなく、指定するコードを作成できる ようになります。
インターフェイスは通常のクラスと同様に定義することができますが、 キーワード class のかわりに interface を用います。またメソッドの実装は全く定義されません。
インターフェイス内で宣言される全てのメソッドはpublicである必要があります。 これは、インターフェイスの特性によります。
コンストラクタ をインターフェイスで宣言できることに注意して下さい。 これはたとえばファクトリで使う場合など、コンテクストによっては役に立ちます。
、、、
公式のみだと分かりにくいので、下記で、実装方法の要点をまとめた。
1.インターフェイスの実装方法要点
・classと同じようなかたちで記述できるが、interface XXX(interface名)で記述をする。
・インターフェイスの中ではメソッドの中身は実装されない。
・インターフェイスで実装されるメソッドはpublicである必要がある。
・インターフェイスを実装したクラスは、必ずその定義されたメソッドを使用しなければならない(重要)
2.インターフェース記述例
ここでは、インターフェイス「behavior」を定義し、クラス「man」に実装(インプリメント)した。
<?php
// Your code here!
interface behavior
{
//インターフェイスでは、実装することができない。
public function eat();
public function sleep();
public function walk();
}
class man implements behavior
{
public function eat()
{
echo "食べる";
}
public function sleep()
{
echo "寝る";
}
public function walk()
{
echo "歩く";
}
}
$sato = new man();
$sato->eat();
?>
>>出力結果
食べる
3.何故インターフェイスを使うのか
インターフェースがなくても、クラスだけでeat,sleep,walkのメソッドは使用できるが、何故インターフェースを使用するのか。
メリットととしては下記があげられる。
・インターフェイスがあれば、実装先クラスの機能を把握しやすくなる
・インターフェイスで実装されたメソッドは、その実装先のクラスで記述されなければ、エラーになるので、必要なメソッドの実装漏れを防げる