Можно ли запретить реализовывать интерфейс напрямую

Можно ли запретить реализовывать интерфейс напрямую? Вместо этого класса необходимо реализовать потомок этого интерфейса (например, оспоримый).

2

Решение

оспоримый это внутренний интерфейс. Там нет потомков этого. Просто когда вы находитесь в PHP userland (то есть там, где вы пишете PHP-код), вы не сможете реализовать оспоримый непосредственно, но только один из тех двух, которые являются оспоримый, тоже:

  1. Итератор
  2. IteratorAggregate

Но причина не в том, что есть какое-то отношение потомков, которое вы можете контролировать в пользовательском пространстве PHP, а только в том, что пересечение является внутренним интерфейсом, недоступным для вас в пользовательском пространстве

Помимо интерфейсов, вы можете создать абстрактный класс, который не может быть создан. Позже вы спросите этот абстрактный тип:

abstract class Mineable
{
// ...
}

class MineAggregate extends Mineable
{
// ...
}

class Mine extends Mineable
{
// ...
}

Это не интерфейсы, по уважительной причине. оспоримый пример, возможно, ввел вас в заблуждение, обычно не следует делать то, что там было сделано. Смотрите также:

Поэтому, естественно, вы можете создать это с помощью интерфейсов, однако любой Интерфейс может быть реализован:

interface Mineable {} // this interface is empty just for the taste of it

interface MineAggregate extends Mineable
{
// ...
}

interface Mine extends Mineable
{
// ...
}

Я не знаю, если это то, что вы ищете, ваш вопрос мне не совсем понятен, я должен признать.

0

Другие решения

может быть возможно определить ваш интерфейс с protected ключевое слово, поэтому только классы в одном пакете могут реализовать интерфейс.

0

По вопросам рекламы [email protected]