Skip to content

Commit a91cb2f

Browse files
committed
Promote warning to ValueError for Spoofchecker::setRestrictionLevel()
Closes GH-6197
1 parent 3c10d4d commit a91cb2f

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

ext/intl/spoofchecker/spoofchecker_main.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ PHP_METHOD(Spoofchecker, setChecks)
125125
/* }}} */
126126

127127
#if U_ICU_VERSION_MAJOR_NUM >= 58
128+
/* TODO Document this method on PHP.net */
128129
/* {{{ Set the loosest restriction level allowed for strings. */
129130
PHP_METHOD(Spoofchecker, setRestrictionLevel)
130131
{
@@ -143,8 +144,10 @@ PHP_METHOD(Spoofchecker, setRestrictionLevel)
143144
USPOOF_MODERATELY_RESTRICTIVE != level &&
144145
USPOOF_MINIMALLY_RESTRICTIVE != level &&
145146
USPOOF_UNRESTRICTIVE != level) {
146-
php_error_docref(NULL, E_WARNING, "Invalid restriction level value");
147-
return;
147+
zend_argument_value_error(1, "must be one of Spoofchecker::ASCII, Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE, "
148+
"Spoofchecker::SINGLE_HIGHLY_RESTRICTIVE, Spoofchecker::SINGLE_MODERATELY_RESTRICTIVE, "
149+
"Spoofchecker::SINGLE_MINIMALLY_RESTRICTIVE, or Spoofchecker::UNRESTRICTIVE");
150+
RETURN_THROWS();
148151
}
149152

150153
uspoof_setRestrictionLevel(co->uspoof, (URestrictionLevel)level);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Spoofchecker attempting to pass an unknown restriction level
3+
--SKIPIF--
4+
<?php if(!extension_loaded('intl') || !class_exists("Spoofchecker")) print 'skip'; ?>
5+
--FILE--
6+
<?php
7+
8+
$x = new Spoofchecker();
9+
try {
10+
$x->setRestrictionLevel(Spoofchecker::SINGLE_SCRIPT);
11+
} catch (\ValueError $e) {
12+
echo $e->getMessage(), \PHP_EOL;
13+
}
14+
15+
?>
16+
--EXPECT--
17+
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

0 commit comments

Comments
 (0)