Skip to content

ImplementedParamTypeMismatch

別のクラスを継承するクラス、またはインターフェースを実装するクラスが、親のものと全く異なるdocblockパラメータ型を持つ場合に発生します。

<?php
class D {
    /** @param string $a */
    public function foo($a): void {}
}

class E extends D {
    /** @param int $a */
    public function foo($a): void {}
}

修正方法

リスコフの置換原則を尊重するようにしてください - 親メソッドをオーバーライドするメソッドは、親メソッドと同じすべての引数を受け入れる必要があります。

<?php
class D {
    /** @param string $a */
    public function foo($a): void {}
}

class E extends D {
    /** @param string|int $a */
    public function foo($a): void {}
}

ユーザーノート