PHPのインターフェースとは?クラス設計を柔軟にする仕組みを解説
PHPのオブジェクト指向では、複数のクラスで共通のメソッド構成を保証したいときにインターフェース(interface)を使います。
インターフェースは「クラスが実装すべきメソッドの一覧」を定める仕組みです。
インターフェースの基本構文
interface インターフェース名 {
public function メソッド名();
}
例:
interface Greeter {
public function greet();
}
インターフェースでは中身のないメソッドだけを定義します。処理内容は記述しません。
クラスでインターフェースを実装する
class Person implements Greeter {
public function greet() {
echo "こんにちは!";
}
}
implements
を使って、クラスがインターフェースを「実装」します。
インターフェースで定義したすべてのメソッドを、そのクラスで必ず実装しなければなりません。
複数のインターフェースを実装する
interface A {
public function methodA();
}
interface B {
public function methodB();
}
class Sample implements A, B {
public function methodA() {
echo "Aの実装";
}
public function methodB() {
echo "Bの実装";
}
}
PHPでは、複数のインターフェースを同時に実装可能です。
抽象クラスとの違い
特徴 |
インターフェース |
抽象クラス |
プロパティの定義 |
できない |
可能 |
メソッドの中身 |
書けない |
抽象メソッドと通常のメソッド両方OK |
多重継承 |
複数実装OK |
1つまで |
活用例
たとえば、複数の異なるクラスに同じ機能(例:print()
)を持たせたい場合、インターフェースを使うことで、統一された呼び出し方が可能になります。
まとめ
- インターフェースは「メソッド名だけ」を定義する設計図
implements
を使ってクラスに実装する
- 実装するクラスは、定義されたすべてのメソッドを作成する必要がある
- 複数のインターフェースを同時に実装できる
- 柔軟で拡張性の高い設計に役立つ
インターフェースを使うことで、コードの統一性や拡張性を保ちながら、柔軟に機能を追加できるようになります。
特に複数人で開発する場合や、将来の保守性を考えた設計において、とても役立つ仕組みです。