もしそうなら、このコードはあなたに質問を引き起こさないと思います。 PHPの微妙さ(奇異?)
interface someInterface{ public function someMethod(); } interface anotherInterface{ public function someMethod(); } class Foo implements someInterface,anotherInterface { public function someMethod(){ echo 'someMethod() was called'.PHP_EOL; } } $foo = new Foo(); $foo->someMethod();
そのため、スクリプトはその作業の結果として何を表示しますか。
答えは猫の下にあります。

class someClass { public: void someMethod(){ }; } class anotherClass { public: void someMethod(){ }; } class fooClass: someClass,anotherClass{ } int main () { fooClass foo; foo.someMethod(); return 0; }

UPD1:なんらかの理由で、コメントの2番目の人はen.wikipedia.org/wiki/Method_overloadingのメソッドのオーバーロードについて話している(メソッド名は同じであるが、呼び出しシグネチャが異なる:メソッドに渡されるパラメーターの種類、番号など)。 おそらく私は何かを正しく説明しなかったかもしれませんが、記事ではオーバーロードについては説明していません。 実際、PHPはこのメカニズムをサポートしていません。 ただし、この場合、インターフェイスの複数の実装に対して、このメカニズムには関係がありません。
繰り返しになりますが、PHPでは、クラスは同じメソッドを含む複数のインターフェイスを実装できません。Java/ C#/などでは可能です。
public interface someInterface { public void someMethod(); } public interface anotherInterface { public void someMethod(); } public class fooClass implements anotherInterface,someInterface { /** * @param args */ public static void main(String[] args) { fooClass fooClass = new fooClass(); fooClass.someMethod(); } @Override public void someMethod() { System.out.println("someMethod() was called"); } }
UPD: C# habrahabr.ru/blogs/php/116916/ # comment_3808966の同じ問題の2つのソリューション
UPD:3はD en.wikipedia.org/wiki/D_%28programming_language%29で同じコードをチェックしました。まったく新しいOOP言語のようで、edファイルは正しく動作します:
import std.stdio; import std.stream; interface D{ void foo(); } interface A{ void foo(); } class E : D, A{ void foo(){ writefln("foo() was called"); } } void main (string[] args){ E e = new E(); e.foo(); } alagar@home:~/d$ dmd -run ed foo() was called