3
<?php
interface a {
    public function bar();
}
interface b extends a {
    public function foo();
    public function bar($a);
}

?>

メソッドの署名が一致しないという致命的なエラーを示しています。PHPでインターフェースのメソッドをオーバーライドすることはできませんか?

4

1 に答える 1

3

bar2 つの関数に互換性がないため、署名の不一致エラーが発生しています。

インターフェイスを次のように変更することで修正できます

interface b extends a {
    public function foo();
    public function bar($a = null);
}

エラーが発生するため、これは完全な解決策ではない可能性がありCan't inherit abstract functionます。

于 2012-09-04T15:54:25.170 に答える