php-src/ext/reflection/tests/ReflectionMethod_invoke_error1.phpt
Gabriel Caruso fef879a2d6 Use bool instead of boolean while throwing a type error
PHP requires boolean typehints to be written "bool" and disallows
"boolean" as an alias. This changes the error messages to match
the actual type name and avoids confusing messages like "must be
of type boolean, boolean given".

This a followup to ce1d69a1f6, which
implements the same change for integer->int.
2018-02-04 23:09:40 +01:00

73 lines
1.7 KiB
PHP

--TEST--
ReflectionMethod::invoke() errors
--FILE--
<?php
class TestClass {
public $prop = 2;
public function foo() {
echo "Called foo(), property = $this->prop\n";
var_dump($this);
return "Return Val";
}
private static function privateMethod() {
echo "Called privateMethod()\n";
}
}
abstract class AbstractClass {
abstract function foo();
}
$foo = new ReflectionMethod('TestClass', 'foo');
$privateMethod = new ReflectionMethod("TestClass::privateMethod");
$testClassInstance = new TestClass();
$testClassInstance->prop = "Hello";
echo "invoke() on a non-object:\n";
try {
var_dump($foo->invoke(true));
} catch (ReflectionException $e) {
var_dump($e->getMessage());
}
echo "\ninvoke() on a non-instance:\n";
try {
var_dump($foo->invoke(new stdClass()));
} catch (ReflectionException $e) {
var_dump($e->getMessage());
}
echo "\nPrivate method:\n";
try {
var_dump($privateMethod->invoke($testClassInstance));
} catch (ReflectionException $e) {
var_dump($e->getMessage());
}
echo "\nAbstract method:\n";
$abstractMethod = new ReflectionMethod("AbstractClass::foo");
try {
$abstractMethod->invoke(true);
} catch (ReflectionException $e) {
var_dump($e->getMessage());
}
?>
--EXPECTF--
invoke() on a non-object:
Warning: ReflectionMethod::invoke() expects parameter 1 to be object, bool given in %s%eReflectionMethod_invoke_error1.php on line %d
NULL
invoke() on a non-instance:
string(72) "Given object is not an instance of the class this method was declared in"
Private method:
string(86) "Trying to invoke private method TestClass::privateMethod() from scope ReflectionMethod"
Abstract method:
string(53) "Trying to invoke abstract method AbstractClass::foo()"