1
1

More than 3 years have passed since last update.

PHPの例で学ぶインターフェイスって何?

Posted at

現場でPHPのコードを見る中で、インターフェイスが実装されているケースがあるのですが、初心者に毛が生えたレベルのエンジニアの私には、よく分かっていないので、まとめてみました。

まずは公式よりの引用↓

0.公式よりの引用

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

インターフェイスは通常のクラスと同様に定義することができますが、 キーワード class のかわりに interface を用います。またメソッドの実装は全く定義されません。

インターフェイス内で宣言される全てのメソッドはpublicである必要があります。 これは、インターフェイスの特性によります。

コンストラクタ をインターフェイスで宣言できることに注意して下さい。 これはたとえばファクトリで使う場合など、コンテクストによっては役に立ちます。

公式より引用

、、、
公式のみだと分かりにくいので、下記で、実装方法の要点をまとめた。

1.インターフェイスの実装方法要点
・classと同じようなかたちで記述できるが、interface XXX(interface名)で記述をする。
・インターフェイスの中ではメソッドの中身は実装されない。
・インターフェイスで実装されるメソッドはpublicである必要がある。
・インターフェイスを実装したクラスは、必ずその定義されたメソッドを使用しなければならない(重要)

2.インターフェース記述例
ここでは、インターフェイス「behavior」を定義し、クラス「man」に実装(インプリメント)した。

sample.php

<?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のメソッドは使用できるが、何故インターフェースを使用するのか。
メリットととしては下記があげられる。

・インターフェイスがあれば、実装先クラスの機能を把握しやすくなる
・インターフェイスで実装されたメソッドは、その実装先のクラスで記述されなければ、エラーになるので、必要なメソッドの実装漏れを防げる

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1