php8.0 クラス継承時にLSP原則(リスコフの置換原則)に違反時はFatal errorとなる

php8.0 クラス継承時にLSP原則(リスコフの置換原則)に違反時はFatal errorとなる

php8.0の新機能、クラス継承時にLSP原則(リスコフの置換原則)に違反時はFatal errorとなったので、エラーを出力するサンプルコードを記述してます。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0

LSP原則違反

LSP原則違反となる、以下のようなコードはphp7ではWarningでしたが、php8ではFatal errorとなります。

<?php
class Hoge {
	public function test(array $val) {}
}
class Foo extends Hoge {
	public function test(int $val) {}
}

php7の場合

PHP Warning:  Declaration of Foo::test(int $val) should be compatible with Hoge::test(array $val) in

php8の場合

PHP Fatal error:  Declaration of Foo::test(int $val) must be compatible with Hoge::test(array $val)