PHP インターフェースのサンプル(interface)

PHPのインターフェースのサンプルです。

確認環境
・PHP 7.1.8

目次

インターフェース

1.インターフェースの宣言

interface  インターフェース名  {
     変数 = 値;  //定数
    function メソッド名(引数);  //抽象メソッド
}
  • インターフェースの宣言は、「interface」を記述します。
  • 定数と抽象メソッドを記述できます。
  • インターフェースは他のインターフェースも継承できます。

2.インターフェースを実装したクラス

class  クラス名  implements  インターフェース名{
}
  • インターフェースを継承してクラスを定義することを「インターフェースを実装する」と言います。
  • インターフェースを実装するクラスには、「implements」を記述します。
  • インターフェースを実装したクラスはインターフェースで宣言されている抽象メソッドをオーバーライドする必要があります。
  • 1つのクラスに複数のインターフェースを実装することができます。その場合カンマで区切って記述します。
  • 以下は、PHPマニュアルのオブジェクト インターフェイスのリンクです。
    http://php.net/manual/ja/language.oop5.interfaces.php

コード

インターフェースのサンプルです。

<?php
interface InterfaceA
{
	public const MOJI = "red";
	public function printA();
}
class Color1 implements InterfaceA 
{
	public function printA(){
		print self::MOJI;
	}
}
$cr1 = new Color1();
print $cr1->printA(); //red
?>

2~6行目は、インターフェースです。
4行目の変数は定数です。
5行目は、抽象メソッドです。
7行目は、implementsを使用して3行目のインターフェースを実装しています。
9行目は、5行目の抽象メソッドをオーバーライドしています。
10行目のself::は静的プロパティ(変数)を指定するので使用しています。

 

クラスが複数のインターフェースを実装する

1つのクラスに複数のインターフェースを実装するサンプルです。

<?php
interface InterfaceA
{
	public function printA();
}
interface InterfaceB
{
	public function printB($cnt2);
}
class Class1 implements InterfaceA,InterfaceB
{
	public function printA(){
		print "a";
	}
	public function printB($c){
		print ($c+1);
	}
}
$cr1 = new Class1();
print $cr1->printA(); //a
print $cr1->printB(1); //2
?>

10行目は、2行目と6行目のインターフェースを実装しています。

 

クラスがクラスの継承とインターフェースの実装を行う

クラスがクラスの継承とインターフェースの実装を行うサンプルです。

<?php
interface InterfaceA
{
	public function printA();
}
class ClassTest{
}
class Class1 extends ClassTest implements InterfaceA
{
	public function printA(){
		print "c";
	}
}
$cr1 = new Class1();
print $cr1->printA(); //c
?>

8行目は、クラスを継承し、インターフェースを実装しています。

 

インターフェースが他のインターフェースを継承する

インターフェースが他のインターフェースを継承できます。

<?php
interface InterfaceA
{
	public function printA();
}
interface InterfaceB extends InterfaceA
{
	public function printB($cnt2);
}
class Class1 implements InterfaceB
{
	public function printA(){
		print "b";
	}
	public function printB($c){
		print ($c+2);
	}
}
$cr1 = new Class1();
print $cr1->printA(); //b
print $cr1->printB(1); //3
?>

6行目は、インターフェースがインターフェースを継承しています。

関連の記事

PHP クラスのサンプル
PHP コンストラクタのサンプル
PHP クラスの継承のサンプル
PHP オーバーライドのサンプル
PHP 抽象メソッドと抽象クラスのサンプル(abstract)

△上に戻る