私が気になる最初のケースは、別のクラスの特定のメソッドを使用するクラスがある場合です。この第二のクラスの仕組みは気にしませんが、特別な方法が必要です。
例:
interface IB {
public function foo();
}
class B implements IB {
public function foo() {
echo "foo";
}
}
class A {
private $b;
public function __construct(IB $b) {
$this->b = $b;
}
public function bar() {
$this->b->foo();
}
}
$a = new A(new B());
$a->bar(); // echos foo
今、あなたは簡単にクラスAのインスタンスに渡された別のオブジェクトを使用することができます
class C implements IB {
public function foo() {
echo "baz";
}
}
$a = new A(new C());
$a->bar(); // echos baz
を同じバーメソッドが呼び出されることに注意してください。
継承を使用しても同様の結果が得られますが、PHPでは複数の継承をサポートしていないため、インターフェイスはより優れたクラスで複数のインターフェイスを実装できます。
PHP design patterns - Strategyのいずれかを確認できます。
http://stackoverflow.com/search?q=when+to+use+interfaces+phpにアクセスしてください。それをした後、あなたの質問を更新して、あなたにまだ不明な点を指摘してください。 – Gordon
*(関連)* [インプリメンテーションが実装されていないプログラムは何を意味しますか](http://stackoverflow.com/questions/2697783/what-does-program-to-interfaces-not-implementations-mean) – Gordon
ありがとう、Gorgon。私は関連する回答のリストを得た。できるだけ早く質問を更新します。 – Donovan