自分が今参画している案件でインターフェースを記述している場面を見かけたので、
メモしてみました。
<?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については、また時間ある時にまとめます...