web-dev-qa-db-fra.com

Comment créer une interface composée d'autres interfaces?

J'aimerais créer une interface, IFoo, qui est essentiellement une combinaison d'une interface personnalisée, IBar, et de quelques interfaces natives, ArrayAccess, IteratorAggregate et Serializable. PHP ne semble pas autoriser les interfaces qui implémentent d'autres interfaces, car le message d'erreur suivant s'affiche lorsque j'essaie:

Erreur d'analyse PHP: erreur de syntaxe, T_IMPLEMENTS inattendu, attente de '{' dans X sur la ligne Y

Je sais que les interfaces peuvent en étendre d'autres, mais PHP n'autorise pas l'héritage multiple et je ne peux pas modifier les interfaces natives. Je suis donc bloqué.

Dois-je dupliquer les autres interfaces dans IFoo ou existe-t-il un meilleur moyen de réutiliser les interfaces natives?

39
FtDRbwLXw6

Vous recherchez le mot clé extends:

Interface IFoo extends IBar, ArrayAccess, IteratorAggregate, Serializable
{
    ...
}

Voir Interfaces d'objet et en particulier Exemple # 2 Interfaces extensibles ff .

76
hakre

Vous devez utiliser une extension de mots-clés pour étendre votre interface et lorsque vous devez implémenter l'interface dans votre classe, vous devez implémenter des mots-clés pour implémenter l'interface.

Vous pouvez implémenter plusieurs interfaces dans votre classe. Si vous implémentez l'interface, vous devez définir le corps de chaque fonction. comme ça...

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();

et ainsi de suite ... méthodes d'appel

0
furkanali89