PHP: как создать расширенный интерфейс для класса, который наследуется от другого класса с собственным интерфейсом? - PullRequest
1 голос
/ 11 октября 2011

У меня есть что-то вроде:

interface IProduct { }
class Product implements IProduct { }
class SpecificProduct extends Product { }

Мне нужен интерфейс, расширяющий IProduct, для моего SpecificProduct.Могу ли я просто сделать что-то вроде:

interface ISpecificProduct { }
class SpecificProduct extends Product implements ISpecificProduct { }

или это перезапишет интерфейс IProduct?

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Это работает в PHP, таким образом, просто пройдите:

class SpecificProduct как это extends Product это implements IProduct уже.Поскольку он также implements ISpecificProduct, он имеет оба интерфейса.

SpecificProduct теперь имеет два интерфейса:

  1. IProduct
  2. ISpecificProduct
0 голосов
/ 11 октября 2011

Да, вы можете сделать это, и нет, он не будет «перезаписывать» IProduct, он добавляет к нему.

Если вы где-то используете интерфейс ISpecificProduct и хотите узнать о методах в IProduct, ISpecificProduct также может расширяться IProduct:

interface ISpecificProduct extends IProduct

В этом случае SpecificProduct получает информацию о сигнатурах метода из IProduct двумя способами.

См. PHP документация по интерфейсам для получения дополнительной информации.


В качестве примечания: если у вас есть соответствующий интерфейс для каждого конкретного класса, вероятно, в вашем объектном дизайне происходит что-то неэффективное или ненужное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...