Ответ 1
Вы ищете ключевое слово extends
:
Interface IFoo extends IBar, ArrayAccess, IteratorAggregate, Serializable
{
...
}
См. Интерфейсы объектов и в специальных Пример # 2 Расширяемые интерфейсы ff.
Я хотел бы создать интерфейс IFoo
, который в основном представляет собой комбинацию пользовательского интерфейса IBar
и нескольких собственных интерфейсов ArrayAccess
, IteratorAggregate
и Serializable
. PHP, похоже, не позволяет интерфейсам, реализующим другие интерфейсы, поскольку при попытке получить следующую ошибку:
Ошибка анализа паролей PHP: ошибка синтаксиса, неожиданные T_IMPLEMENTS, ожидающие '{' в X на линии Y
Я знаю, что интерфейсы могут расширять другие, но PHP не допускает множественного наследования, и я не могу изменять собственные интерфейсы, поэтому теперь я застрял.
Нужно ли дублировать другие интерфейсы в IFoo
, или есть лучший способ, который позволяет мне повторно использовать собственные?
Вы ищете ключевое слово extends
:
Interface IFoo extends IBar, ArrayAccess, IteratorAggregate, Serializable
{
...
}
См. Интерфейсы объектов и в специальных Пример # 2 Расширяемые интерфейсы ff.
Вы должны использовать 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();
и так далее... вызывать методы