Подтвердить что ты не робот

Как создать интерфейс, состоящий из других интерфейсов?

Я хотел бы создать интерфейс IFoo, который в основном представляет собой комбинацию пользовательского интерфейса IBar и нескольких собственных интерфейсов ArrayAccess, IteratorAggregate и Serializable. PHP, похоже, не позволяет интерфейсам, реализующим другие интерфейсы, поскольку при попытке получить следующую ошибку:

Ошибка анализа паролей PHP: ошибка синтаксиса, неожиданные T_IMPLEMENTS, ожидающие '{' в X на линии Y

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

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

4b9b3361

Ответ 2

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

Вы можете использовать implements нескольких интерфейсов в своем классе. Если вы реализуете интерфейс, то вам нужно определить тело всех функций, как это...

interface FirstInterface
{
    function firstInterfaceMethod1();
    function firstInterfaceMethod2();
}
interface SecondInterface
{
    function SecondInterfaceMethod1();
    function SecondInterfaceMethod2();
}
interface PerantInterface extends FirstInterface, SecondInterface
{
    function perantInterfaceMethod1();
    function perantInterfaceMethod2();
}


class Home implements PerantInterface
{
    function firstInterfaceMethod1()
    {
        echo "firstInterfaceMethod1 implement";
    }

    function firstInterfaceMethod2()
    {
        echo "firstInterfaceMethod2 implement";
    }
    function SecondInterfaceMethod1()
    {
        echo "SecondInterfaceMethod1 implement";
    }
    function SecondInterfaceMethod2()
    {
        echo "SecondInterfaceMethod2 implement";
    }
    function perantInterfaceMethod1()
    {
        echo "perantInterfaceMethod1 implement";
    }
    function perantInterfaceMethod2()
    {
        echo "perantInterfaceMethod2 implement";
    }
}

$obj = new Home();
$obj->firstInterfaceMethod1();

и так далее... вызывать методы