[php-src] Issue #20426: Spoofchecker::setRestrictionLevel() error message suggests missing constants
| From: | DanielEScherzer | Date: | Sat, 08 Nov 2025 15:40:40 +0000 |
| Subject: | [php-src] Issue #20426: Spoofchecker::setRestrictionLevel() error message suggests missing constants | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-251190@lists.php.net to get a copy of this message | ||
Issue: https://github.com/php/php-src/issues/20426
Author: DanielEScherzer
### Description
The following code:
```php
<?php
try {
(new Spoofchecker())->setRestrictionLevel( -2 );
} catch ( \Throwable $e ) {
// Show the error message
echo $e->getMessage() . "\n\n";
}
$cases = [
'Spoofchecker::ASCII',
'Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE',
'Spoofchecker::SINGLE_HIGHLY_RESTRICTIVE',
'Spoofchecker::SINGLE_MODERATELY_RESTRICTIVE',
'Spoofchecker::SINGLE_MINIMALLY_RESTRICTIVE',
'Spoofchecker::UNRESTRICTIVE',
];
foreach ( $cases as $case ) {
if ( defined( $case ) ) {
echo "$case - is defined\n";
} else {
echo "$case - NOT defined\n";
}
}
```
Resulted in this output:
```
Spoofchecker::setRestrictionLevel(): Argument #1 ($level) must be one of Spoofchecker::ASCII,
Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE, Spoofchecker::SINGLE_HIGHLY_RESTRICTIVE,
Spoofchecker::SINGLE_MODERATELY_RESTRICTIVE, Spoofchecker::SINGLE_MINIMALLY_RESTRICTIVE, or
Spoofchecker::UNRESTRICTIVE
Spoofchecker::ASCII - is defined
Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE - is defined
Spoofchecker::SINGLE_HIGHLY_RESTRICTIVE - NOT defined
Spoofchecker::SINGLE_MODERATELY_RESTRICTIVE - NOT defined
Spoofchecker::SINGLE_MINIMALLY_RESTRICTIVE - NOT defined
Spoofchecker::UNRESTRICTIVE - is defined
```
But I expected this output instead:
* ValueError message only suggests class constants that exist
### PHP Version
```plain
8.3+
```
### Operating System
_No response_