DelayedTargetValidation アトリビュートはじめにこのアトリビュートは、内部アトリビュートに対する適用対象の検証エラーを、 コンパイル時から、Reflection API を通じてアトリビュートがインスタンス化される時点へと遅延させます。 宣言に適用すると、同じ適用対象における内部アトリビュートの不正な使用は、 コンパイル時のエラーを引き起こしません。代わりに検証は先送りされ、 ReflectionAttribute::newInstance() を通じてアトリビュートがインスタンス化される時点で実行されます。 これは主に前方互換性を意図したものであり、 将来の PHP バージョンで有効な適用対象が追加されうるアトリビュートを使うコードを、 古いバージョンで壊さずに済むようにします。 クラス概要
#[\Attribute]
final
DelayedTargetValidation
例例1 不正な適用対象の検証を遅延させる Override がクラス定数に対して使えない PHP バージョンであっても、 これはコンパイル時のエラーを発生させません。 例2 検証はリフレクション時に行われる 同じ適用対象に適用されたアトリビュート(DelayedTargetValidation 自身を除く)が、 ReflectionAttribute::newInstance() を使ってリフレクション経由でインスタンス化されると、 適用対象の検証が実行され、サポートされていない適用対象でアトリビュートが使われていれば 例外がスローされる可能性があります。 注意このアトリビュートは、内部アトリビュートの適用対象の検証にのみ影響します。 これらのアトリビュートが実行する機能的な検証を抑制するわけではありません。 たとえば Override は、 メソッドが実際には親のメソッドをオーバーライドしていない場合に、引き続きエラーを発生させます。 |