Php 7以降で出るWarning

Warning: Declaration of TObject::Foo($i1, $i2) should be compatible with Hoge::Foo($i1) in index.php on line 12

このWarningメッセージは、abstractクラスで作成したFooメソッドの引数とTObjectでのFooの引数が違うという警告です。

 

TObject側に「=0」を入れるとWarningメセージを回避することができます。

<?php

 

abstract class Hoge {

    protected function Foo($i1){}

}

 

class TObject extends Hoge

{

    public function Foo($i1, $i2 = 0){

        echo $i1.$i2."¥n";

    }

}

 

$o1 = new TObject();

$o1->Foo("1", 2);