diff --git a/Command/DebugCommand.php b/Command/DebugCommand.php
index c2adfc028..22ccb12ee 100644
--- a/Command/DebugCommand.php
+++ b/Command/DebugCommand.php
@@ -56,10 +56,10 @@ protected function configure()
->addArgument('class', InputArgument::REQUIRED, 'A fully qualified class name or a path')
->addOption('show-all', null, InputOption::VALUE_NONE, 'Show all classes even if they have no validation constraints')
->setHelp(<<<'EOF'
-The %command.name% 'App\Entity\Dummy' command dumps the validators for the dummy class.
+ The %command.name% 'App\Entity\Dummy' command dumps the validators for the dummy class.
-The %command.name% src/ command dumps the validators for the `src` directory.
-EOF
+ The %command.name% src/ command dumps the validators for the `src` directory.
+ EOF
)
;
}
diff --git a/Constraints/DateTimeValidator.php b/Constraints/DateTimeValidator.php
index c88732d4d..37e82bff9 100644
--- a/Constraints/DateTimeValidator.php
+++ b/Constraints/DateTimeValidator.php
@@ -54,7 +54,7 @@ public function validate(mixed $value, Constraint $constraint)
}
if (str_ends_with($constraint->format, '+')) {
- $errors['warnings'] = array_filter($errors['warnings'], fn ($warning) => 'Trailing data' !== $warning);
+ $errors['warnings'] = array_filter($errors['warnings'], static fn ($warning) => 'Trailing data' !== $warning);
}
foreach ($errors['warnings'] as $warning) {
diff --git a/Constraints/ExpressionLanguageProvider.php b/Constraints/ExpressionLanguageProvider.php
index 0a3727503..8e232facb 100644
--- a/Constraints/ExpressionLanguageProvider.php
+++ b/Constraints/ExpressionLanguageProvider.php
@@ -19,14 +19,10 @@ class ExpressionLanguageProvider implements ExpressionFunctionProviderInterface
public function getFunctions(): array
{
return [
- new ExpressionFunction('is_valid', function (...$arguments) {
- return \sprintf(
- '0 === $context->getValidator()->inContext($context)->validate(%s)->getViolations()->count()',
- implode(', ', $arguments)
- );
- }, function (array $variables, ...$arguments): bool {
- return 0 === $variables['context']->getValidator()->inContext($variables['context'])->validate(...$arguments)->getViolations()->count();
- }),
+ new ExpressionFunction('is_valid', static fn (...$arguments) => \sprintf(
+ '0 === $context->getValidator()->inContext($context)->validate(%s)->getViolations()->count()',
+ implode(', ', $arguments)
+ ), static fn (array $variables, ...$arguments) => 0 === $variables['context']->getValidator()->inContext($variables['context'])->validate(...$arguments)->getViolations()->count()),
];
}
}
diff --git a/DataCollector/ValidatorDataCollector.php b/DataCollector/ValidatorDataCollector.php
index a50b16687..decf90928 100644
--- a/DataCollector/ValidatorDataCollector.php
+++ b/DataCollector/ValidatorDataCollector.php
@@ -54,7 +54,7 @@ public function lateCollect(): void
{
$collected = $this->validator->getCollectedData();
$this->data['calls'] = $this->cloneVar($collected);
- $this->data['violations_count'] = array_reduce($collected, fn ($previous, $item) => $previous + \count($item['violations']), 0);
+ $this->data['violations_count'] = array_reduce($collected, static fn ($previous, $item) => $previous + \count($item['violations']), 0);
}
public function getCalls(): Data
@@ -75,7 +75,7 @@ public function getName(): string
protected function getCasters(): array
{
return parent::getCasters() + [
- \Exception::class => function (\Exception $e, array $a, Stub $s) {
+ \Exception::class => static function (\Exception $e, array $a, Stub $s) {
foreach (["\0Exception\0previous", "\0Exception\0trace"] as $k) {
if (isset($a[$k])) {
unset($a[$k]);
@@ -85,7 +85,7 @@ protected function getCasters(): array
return $a;
},
- FormInterface::class => fn (FormInterface $f, array $a) => [
+ FormInterface::class => static fn (FormInterface $f, array $a) => [
Caster::PREFIX_VIRTUAL.'name' => $f->getName(),
Caster::PREFIX_VIRTUAL.'type_class' => new ClassStub($f->getConfig()->getType()->getInnerType()::class),
Caster::PREFIX_VIRTUAL.'data' => $f->getData(),
diff --git a/Mapping/PropertyMetadata.php b/Mapping/PropertyMetadata.php
index 89a25a5ef..8c93e3767 100644
--- a/Mapping/PropertyMetadata.php
+++ b/Mapping/PropertyMetadata.php
@@ -51,9 +51,9 @@ public function getPropertyValue(mixed $object): mixed
// There is no way to check if a property has been unset or if it is uninitialized.
// When trying to access an uninitialized property, __get method is triggered.
- // If __get method is not present, no fallback is possible
+ // If there is neither __get method nor get hook, no fallback is possible
// Otherwise we need to catch an Error in case we are trying to access an uninitialized but set property.
- if (!method_exists($object, '__get')) {
+ if (!method_exists($object, '__get') && (\PHP_VERSION_ID < 80400 || !$reflProperty->hasHook(\PropertyHookType::Get))) {
return null;
}
diff --git a/Resources/translations/validators.af.xlf b/Resources/translations/validators.af.xlf
index 61a8b3724..d16f21ecb 100644
--- a/Resources/translations/validators.af.xlf
+++ b/Resources/translations/validators.af.xlf
@@ -24,7 +24,7 @@
You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.
- Jy moet ten minste {{ limit }} kies.|Jy moet ten minste {{ limit }} keuses kies.
+ Jy moet ten minste {{ limit }} keuse kies.|Jy moet ten minste {{ limit }} keuses kies.You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.
@@ -136,7 +136,7 @@
This value is not a valid IP address.
- Hierdie waarde is nie 'n geldige IP-adres nie.
+ Hierdie waarde is nie 'n geldige IP-adres nie.This value is not a valid language.
@@ -192,7 +192,7 @@
No temporary folder was configured in php.ini, or the configured folder does not exist.
- Geen tydelike gids is in php.ini opgestel nie, of die opgestelde gids bestaan nie.
+ Geen tydelike vouer is in php.ini gekonfigureer nie, of die gekonfigureerde vouer bestaan nie.Cannot write temporary file to disk.
@@ -208,7 +208,7 @@
This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.
- Hierdie versameling moet {{ limit }} element of minder bevat.|Hierdie versameling moet {{ limit }} elemente of meer bevat.
+ Hierdie versameling moet {{ limit }} element of minder bevat.|Hierdie versameling moet {{ limit }} elemente of minder bevat.This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.
@@ -224,7 +224,7 @@
This value is not a valid International Bank Account Number (IBAN).
- Hierdie waarde is nie 'n geldige Internasionale Bankrekeningnommer (IBAN) nie.
+ Hierdie waarde is nie 'n geldige Internasionale Bankrekeningnommer (IBAN) nie.This value is not a valid ISBN-10.
@@ -312,7 +312,7 @@
This value is not a valid Business Identifier Code (BIC).
- Hierdie waarde is nie 'n geldige Besigheid Identifiseerder Kode (BIC) nie.
+ Hierdie waarde is nie 'n geldige Besigheid Identifiseerder Kode (BIC) nie.Error
@@ -320,7 +320,7 @@
This value is not a valid UUID.
- Hierdie waarde is nie 'n geldige UUID nie.
+ Hierdie waarde is nie 'n geldige UUID nie.This value should be a multiple of {{ compared_value }}.
@@ -360,7 +360,7 @@
This password has been leaked in a data breach, it must not be used. Please use another password.
- Hierdie wagwoord is in 'n data-oortreding uitgelek, dit mag nie gebruik word nie. Gebruik asseblief 'n ander wagwoord.
+ Hierdie wagwoord is in 'n data-oortreding uitgelek, dit mag nie gebruik word nie. Gebruik asseblief 'n ander wagwoord.This value should be between {{ min }} and {{ max }}.
@@ -404,155 +404,155 @@
The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.
- Die lêernaam is te lank. Dit moet {{ filename_max_length }} karakter of minder hê.|Die lêernaam is te lank. Dit moet {{ filename_max_length }} karakters of minder hê.
+ Die lêernaam is te lank. Dit moet {{ filename_max_length }} karakters of minder hê.|Die lêernaam is te lank. Dit moet {{ filename_max_length }} karakters of minder hê.The password strength is too low. Please use a stronger password.
- Die wagwoordsterkte is te laag. Gebruik asseblief 'n sterker wagwoord.
+ Die wachtwoord sterkte is te laag. Gebruik asseblief 'een sterker wachtwoord.This value contains characters that are not allowed by the current restriction-level.
- Hierdie waarde bevat karakters wat nie toegelaat word deur die huidige beperkingsvlak nie.
+ Hierdie waarde bevat karakters wat nie toegelaat word deur die huidige beperkingsvlak nie.Using invisible characters is not allowed.
- Die gebruik van onsigbare karakters word nie toegelaat nie.
+ Die gebruik van onsigbare karakters word nie toegelaat nie.Mixing numbers from different scripts is not allowed.
- Die meng van nommers van verskillende skrifte word nie toegelaat nie.
+ Die meng van nommers van verskillende skrifte word nie toegelaat nie.Using hidden overlay characters is not allowed.
- Die gebruik van verborge oorvleuelende karakters word nie toegelaat nie.
+ Die gebruik van verborgen oorvleuelende karakters word nie toegelaat nie.The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}.
- Die uitbreiding van die lêer is ongeldig ({{ extension }}). Toegelate uitbreidings is {{ extensions }}.
+ Die uitbreiding van de lêer is ongeldig ({{ extension }}). Toegelaten uitbreidings is {{ extensions }}.The detected character encoding is invalid ({{ detected }}). Allowed encodings are {{ encodings }}.
- Die opgespoorde karakterkodering is ongeldig ({{ detected }}). Toegelate koderings is {{ encodings }}.
+ Die opgespoorde karakterkodering is ongeldig ({{ detected }}). Toegelate koderings is {{ encodings }}.This value is not a valid MAC address.
- Hierdie waarde is nie 'n geldige MAC-adres nie.
+ Hierdie waarde is nie 'n geldige MAC-adres nie.This URL is missing a top-level domain.
- Die URL mis 'n topvlakdomein.
+ Die URL mis 'n topvlakdomein.This value is too short. It should contain at least one word.|This value is too short. It should contain at least {{ min }} words.
- Hierdie waarde is te kort. Dit moet ten minste een woord bevat.|Hierdie waarde is te kort. Dit moet ten minste {{ min }} woorde bevat.
+ Hierdie waarde is te kort. Dit moet ten minste een woord bevat.|Hierdie waarde is te kort. Dit moet ten minste {{ min }} woorde bevat.This value is too long. It should contain one word.|This value is too long. It should contain {{ max }} words or less.
- Hierdie waarde is te lank. Dit moet een woord bevat.,Hierdie waarde is te lank. Dit moet {{ max }} woorde of minder bevat.
+ Hierdie waarde is te lank. Dit moet een woord bevat.,Hierdie waarde is te lank. Dit moet {{ max }} woorde of minder bevat.This value does not represent a valid week in the ISO 8601 format.
- Hierdie waarde stel nie 'n geldige week in die ISO 8601-formaat voor nie.
+ Hierdie waarde stel nie 'n geldige week in die ISO 8601-formaat voor nie.This value is not a valid week.
- Hierdie waarde is nie 'n geldige week nie.
+ Hierdie waarde is nie 'n geldige week nie.This value should not be before week "{{ min }}".
- Hierdie waarde mag nie voor week "{{ min }}" wees nie.
+ Hierdie waarde mag niet voor week "{{ min }}" wees nie.This value should not be after week "{{ max }}".
- Hierdie waarde mag nie na week "{{ max }}" kom nie.
+ Hierdie waarde mag nie na week "{{ max }}" kom nie.This value is not a valid Twig template.
- Hierdie waarde is nie 'n geldige Twig-sjabloon nie.
+ Hierdie waarde is nie 'n geldige Twig-sjabloon nie.This file is not a valid video.
- Hierdie lêer is nie 'n geldige video nie.
+ Hierdie lêer is nie 'n geldige video nie.The size of the video could not be detected.
- Die grootte van die video kon nie bepaal word nie.
+ Die grootte van die video kon nie bepaal word nie.The video width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.
- Die videowydte is te groot ({{ width }}px). Toegelate maksimum wydte is {{ max_width }}px.
+ Die videowydte is te groot ({{ width }}px). Toegelate maksimum wydte is {{ max_width }}px.The video width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.
- Die videobreedte is te klein ({{ width }}px). Minimum verwagte breedte is {{ min_width }}px.
+ Die videobreedte is te klein ({{ width }}px). Minimum verwagte breedte is {{ min_width }}px.The video height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.
- Die videohoogte is te groot ({{ height }}px). Toegelate maksimum hoogte is {{ max_height }}px.
+ Die videohoogte is te groot ({{ height }}px). Toegestane maximum hoogte is {{ max_height }}px.The video height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.
- Die videohoogte is te klein ({{ height }}px). Minimum hoogte verwag is {{ min_height }}px.
+ Die videohoogte is te klein ({{ height }}px). Minimum hoogte verwag is {{ min_height }}px.The video has too few pixels ({{ pixels }} pixels). Minimum amount expected is {{ min_pixels }} pixels.
- Die video het te min pixels ({{ pixels }}). Minimum hoeveelheid verwag is {{ min_pixels }}.
+ Die video het te min pixels ({{ pixels }}). Minimum hoeveelheid verwag is {{ min_pixels }} pixels.The video has too many pixels ({{ pixels }} pixels). Maximum amount expected is {{ max_pixels }} pixels.
- Die video het te veel pixels ({{ pixels }}). Maksimum verwagte hoeveelheid is {{ max_pixels }}.
+ Die video het te veel pixels ({{ pixels }}). Maksimum verwagte hoeveelheid is {{ max_pixels }}.The video ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.
- Die videoratio is te groot ({{ ratio }}). Toegelate maksimum ratio is {{ max_ratio }}.
+ Die videoratio is te groot ({{ ratio }}). Toegelate maksimum ratio is {{ max_ratio }}.The video ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.
- Die videoratio is te klein ({{ ratio }}). Minimum verwagte ratio is {{ min_ratio }}.
+ Die videoratio is te klein ({{ ratio }}). Minimum verwagte ratio is {{ min_ratio }}.The video is square ({{ width }}x{{ height }}px). Square videos are not allowed.
- Die video is vierkantig ({{ width }}x{{ height }}px). Vierkantige video's word nie toegelaat nie.
+ Die video is vierkantig ({{ width }}x{{ height }}px). Vierkantige video's word nie toegelaat nie.The video is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented videos are not allowed.
- Die video is landskap georiënteer ({{ width }}x{{ height }} px). Landskapvideo's word nie toegelaat nie.
+ Die video is landskap georiënteer ({{ width }}x{{ height }} px). Landskapvideo's word nie toegelaat nie.The video is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented videos are not allowed.
- Die video is portretgeoriënteerd ({{ width }}x{{ height }}px). Portretgeoriënteerde video's word nie toegelaat nie.
+ Die video is portretgeoriënteerd ({{ width }}x{{ height }}px). Portretgeoriënteerde video's word nie toegelaat nie.The video file is corrupted.
- Die videolêer is korrup.
+ Die videolêer is korrup.The video contains multiple streams. Only one stream is allowed.
- Die video bevat veelvuldige strome. Slegs een stroom word toegelaat.
+ Die video bevat veelvuldige strome. Slegs een stroom word toegelaat.Unsupported video codec "{{ codec }}".
- Nie-ondersteunde videokodek "{{ codec }}".
+ Nie-ondersteunde videokodek "{{ codec }}".Unsupported video container "{{ container }}".
- Nie-ondersteunde videohouer "{{ container }}".
+ Nie-ondersteunde videohouer "{{ container }}".The image file is corrupted.
- Die beeldlêer is beskadig.
+ Die beeldlêer is beskadig.The image has too few pixels ({{ pixels }} pixels). Minimum amount expected is {{ min_pixels }} pixels.
- Die beeld het te min pixels ({{ pixels }}). Minimum hoeveelheid verwag is {{ min_pixels }}.
+ Die beeld het te min pixels ({{ pixels }}). Minimum hoeveelheid verwag is {{ min_pixels }}.The image has too many pixels ({{ pixels }} pixels). Maximum amount expected is {{ max_pixels }} pixels.
- Die beeld het te veel pixels ({{ pixels }}). Maksimum verwagte aantal is {{ max_pixels }}.
+ Die beeld het te veel pixels ({{ pixels }}). Maksimum verwagte aantal is {{ max_pixels }} pixels.This filename does not match the expected charset.
- Hierdie lêernaam stem nie ooreen met die verwagte karakterstel nie.
+ Hierdie lêernaam stem nie ooreen met die verwagte karakterstel nie.