PHP Conference Fukuoka 2025

Override アトリビュート

(PHP 8 >= 8.3.0)

はじめに

このアトリビュートは、 親クラスのメソッドやプロパティをオーバーライドしている意図があるか、 インターフェイスで定義されたプロパティやメソッドを実装していることを示します。

親クラス中に同じ名前のメソッドやプロパティが存在しなかったり、 実装されているインターフェイスがない場合は、 コンパイル時にエラーが発生します。

シグネチャのチェックを回避できてしまうため、 このアトリビュートは __construct() に対しては使えません。

クラス概要

final class Override {
/* メソッド */
public __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

目次

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top