@NubasLol

Можно ли в интерфейсе указать что класс наследует другой класс?

Например есть класс Model, и класс Article. Как написать интерфейс для Article, который заставит его реализовать все методы класса Model и еще добавить свои методы
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
Интерфейс может extends (расширять) родительский интерфейс:
<?php
interface a
{
    public function foo();
}

interface b extends a
{
    public function baz(Baz $baz);
}


Напишите интерфейс ModelInterface, который бы класс Model воплощал.
Создайте новый интерфейс ArticleInterface, наследующий ModelInterface:
interface ArticleInterface extends ModelInterface
{
  // доп. методы
}

class Article implements ArticleInterface
{

}


Итого объявление класса Article будет примерно таким:
class Article extends Model implements ArticleInterface


рабочий код
<?php

interface ModelInterface
{
  public function get();
  public function all();
}

interface ArticleInterface extends ModelInterface
{
  public function publish();
}


class Model implements ModelInterface
{
  public function get()
  {
    return "get";
  }

  public function all()
  {
    return "all";
  }
}

class Article extends Model implements ArticleInterface 
{
  public function publish() {
    return "published!";
  }
}


$article = new Article();
echo $article->get();
echo $article->publish();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы