Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Zend/zend_builtin_functions.c
Original file line number Diff line number Diff line change
Expand Up @@ -1107,7 +1107,8 @@ ZEND_FUNCTION(method_exists)
RETURN_FALSE;
}
} else {
RETURN_FALSE;
zend_argument_type_error(1, "must be of type object|string, %s given", zend_zval_type_name(klass));
RETURN_THROWS();
}

lcname = zend_string_tolower(method_name);
Expand Down
50 changes: 27 additions & 23 deletions ext/standard/tests/class_object/method_exists_variation_001.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,11 @@ $values = array(

foreach($values as $value) {
echo "\nArg value $value \n";
var_dump( method_exists($value, $method) );
try {
var_dump( method_exists($value, $method) );
} catch (TypeError $e) {
echo $e->getMessage(), PHP_EOL;
}
};

echo "Done";
Expand All @@ -89,69 +93,69 @@ Error: 2 - Undefined variable $undefined_var
Error: 2 - Undefined variable $unset_var

Arg value 0
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, int given

Arg value 1
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, int given

Arg value 12345
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, int given

Arg value -2345
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, int given

Arg value 10.5
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, float given

Arg value -10.5
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, float given

Arg value 101234567000
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, float given

Arg value 1.07654321E-9
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, float given

Arg value 0.5
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, float given
Error: 2 - Array to string conversion

Arg value Array
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given
Error: 2 - Array to string conversion

Arg value Array
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given
Error: 2 - Array to string conversion

Arg value Array
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given
Error: 2 - Array to string conversion

Arg value Array
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given
Error: 2 - Array to string conversion

Arg value Array
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given

Arg value
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given

Arg value
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given

Arg value 1
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, bool given

Arg value
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, bool given

Arg value 1
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, bool given

Arg value
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, bool given

Arg value
bool(false)
Expand All @@ -168,8 +172,8 @@ In autoload(String)
bool(false)

Arg value
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given

Arg value
bool(false)
method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given
Done