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)
-
前の記事
go言語 文字列と文字列を結合する 2020.12.02
-
次の記事
nginxのバージョンを確認する 2020.12.02
コメントを書く