Skip to content

Spoofchecker::setRestrictionLevel() error message suggests missing constants #20426

@DanielEScherzer

Description

@DanielEScherzer

Description

The following code:

<?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

8.3+

Operating System

No response

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions