DelayedTargetValidation
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
DelayedTargetValidation
Референца за `class.delayedtargetvalidation.php` со подобрена типографија и навигација.
The DelayedTargetValidation attribute
Атрибутот DelayedTargetValidation
Вовед
(PHP 8 >= 8.5.0)
Овој атрибут го одложува валидирањето на грешките на целниот атрибут за внатрешни атрибути од време на компилација до кога атрибутот ќе биде инстанциран преку Reflection API. , осигурувајќи дека валидацијата на аргументите се случува во тој момент..
Кога се применува на декларација, секоја невалидна употреба на внатрешни атрибути на истата цел нема да предизвика грешка при компилација. Наместо тоа, валидацијата се одложува и се извршува кога атрибутот ќе биде инстанциран преку
Синопсис на класата
Примери
Ова е наменето првенствено за компатибилност со идни верзии, дозволувајќи му на кодот да користи атрибути кои може да добијат дополнителни валидни цели во идните верзии на PHP без да се прекине на постари верзии.
<?php
class Base {
protected function foo(): void {}
}
class Child extends Base {
#[\DelayedTargetValidation]
#[\Override]
public const NAME = 'child';
#[\Override]
protected function foo(): void {}
}Пример #1 Одложување на валидацијата на невалидна цел Надминување На PHP верзии каде што
не е дозволено на константите на класата, ова не произведува грешка при компилација.
<?php
$reflection = new ReflectionClassConstant(Child::class, 'NAME');
foreach ($reflection->getAttributes() as $attribute) {
$attribute->newInstance(); // May throw if invalid
}Пример #2 Валидацијата се случува за време на рефлексија , осигурувајќи дека валидацијата на аргументите се случува во тој момент.Кога било кој атрибут применет на истата цел (освен самиот DelayedTargetValidation) ќе биде инстанциран преку рефлексија користејќи
Белешки
, се врши валидација на целта и може да се фрли исклучок ако атрибутот се користи на неподдржана цел.
Овој атрибу влијае само на валидацијата на целта на внатрешните атрибути. Надминување Тој не ги потиснува функционалните валидации извршени од тие атрибути. На пример,