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?
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 .
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