LoginSignup
4
0

More than 1 year has passed since last update.

【PHP】インターフェースについて

Last updated at Posted at 2021-12-01

自分が今参画している案件でインターフェースを記述している場面を見かけたので、
メモしてみました。

<?php
  interface インターフェース名
  {
      public function findById(int $id): userEntity;
      public function findByIds(array $ids): array;
  }
  class UserController implements インターフェース名
  {
      public function findById(int $id): userEntity
      {
          // 取得処理
      }
      public function findByIds(array $ids): array
      {
          // 取得処理
      }
  }

インターフェースで記述できるのは「publicな関数のみ」です。
protectedやprivateなものは書くことができません。
あくまでも「この関数があるよ」という「宣言」のみの記述です。

クラスでインターフェースを採用する際には、implementsを使用します。
なんとなくわかりますが、コードの記述量も増えることからどういったメリットがあるのでしょうか?

interfaceに記述されている関数が、interfaceを採用しているクラスで利用されていないとエラー表示してくれる
--> 関数の記述漏れを防ぐメリットがある。

インターフェイス内の関数が用意されていることが保証されている。そのため、クラスの関数をあらかじめ把握しやすくなる。
--> インターフェイスはある特定の関数群の概要を記述したものなので、クラスの仕様書みたいな使い方もできる。

それに付随するインターフェース を利用したDIについては、また時間ある時にまとめます...

4
0
1

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
4
0