(PHP 8 >= 8.3.0)
このアトリビュートは、 親クラスのメソッドやプロパティをオーバーライドしている意図があるか、 インターフェイスで定義されたプロパティやメソッドを実装していることを示します。
親クラス中に同じ名前のメソッドやプロパティが存在しなかったり、 実装されているインターフェイスがない場合は、 コンパイル時にエラーが発生します。
シグネチャのチェックを回避できてしまうため、 このアトリビュートは __construct() に対しては使えません。
バージョン | 説明 |
---|---|
8.5.0 | Override は、 プロパティにも適用できるようになりました。 |
例1 メソッドと一緒に使う
<?php
class Base {
protected function foo(): void {}
}
final class Extended extends Base {
#[\Override]
protected function boo(): void {}
}
?>
上の例の PHP 8.3 での出力は、たとえば以下のようになります。:
Fatal error: Extended::boo() has #[\Override] attribute, but no matching parent method exists
例2 プロパティと一緒に使う
<?php
class Base {
protected string $foo;
}
final class Extended extends Base {
#[\Override]
protected string $boo;
}
?>
上の例の PHP 8.5 での出力は、たとえば以下のようになります。:
Fatal error: Extended::$boo has #[\Override] attribute, but no matching parent property exists