#interfaceとは
すでに親クラスが存在するが、すべての子クラスではなく特定のクラスにのみ継承したい場合に使用する
以下の場合、Postクラスにのみメソッドの指定を強要したい場合を考える
しかし、使用上、子クラスは一つの親クラスしか持ってはいけない
abstract class BasePost
{
protected $text;
public function __construct($text)
{
$this->text = $text;
}
abstract public function show();
}
class Post extends BasePost
{
public function show()
{
echo $this->text . PHP_EOL;
}
}
class StaredPost extends BasePost
{
private $star;
public function __construct($text, $sponsor)
{
parent::__construct($text);
$this->star = $star;
}
public function show()
{
echo $this->text . PHP_EOL;
echo $this->star . PHP_EOL;
}
}
##使い方
①interfaceとその中に強要したいメソッドを一番上に表記する
②指定したいクラスに[implements interface名]を追記する
③指定したクラスに処理を追加する
//①
interface plusInterface
{
public function plus();
}
abstract class BasePost
{
protected $text;
public function __construct($text)
{
$this->text = $text;
}
abstract public function show();
}
//②
class Post extends BasePost implements plusInterface
{
//③
private $pluses = 0;
public function pluses()
{
$this->pluses++;
}
public function show()
{
echo $this->text . PHP_EOL;
echo $this->pluses . PHP_EOL;
}
}
class StaredPost extends BasePost
{
private $star;
public function __construct($text, $star)
{
parent::__construct($text);
$this->star = $star;
}
public function show()
{
echo $this->text . PHP_EOL;
echo $this->star . PHP_EOL;
}
}