1
0
mirror of https://github.com/php/php-src.git synced 2026-03-25 16:52:18 +01:00
Files
archived-php-src/ext/reflection/tests/ReflectionProperty_getValue_error.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

87 lines
2.0 KiB
PHP

--TEST--
Test ReflectionProperty::getValue() errors.
--FILE--
<?php
class TestClass {
public $pub;
public $pub2 = 5;
static public $stat = "static property";
protected $prot = 4;
private $priv = "keepOut";
}
class AnotherClass {
}
$instance = new TestClass();
$invalidInstance = new AnotherClass();
$propInfo = new ReflectionProperty('TestClass', 'pub2');
echo "Too few args:\n";
var_dump($propInfo->getValue());
echo "\nToo many args:\n";
var_dump($propInfo->getValue($instance, true));
echo "\nWrong type of arg:\n";
var_dump($propInfo->getValue(true));
echo "\nInstance without property:\n";
$propInfo = new ReflectionProperty('TestClass', 'stat');
echo "\nStatic property / too many args:\n";
var_dump($propInfo->getValue($instance, true));
echo "\nStatic property / wrong type of arg:\n";
var_dump($propInfo->getValue(true));
echo "\nProtected property:\n";
try {
$propInfo = new ReflectionProperty('TestClass', 'prot');
var_dump($propInfo->getValue($instance));
}
catch(Exception $exc) {
echo $exc->getMessage();
}
echo "\n\nInvalid instance:\n";
$propInfo = new ReflectionProperty('TestClass', 'pub2');
var_dump($propInfo->getValue($invalidInstance));
?>
--EXPECTF--
Too few args:
Warning: ReflectionProperty::getValue() expects exactly 1 parameter, 0 given in %s on line %d
NULL
Too many args:
Warning: ReflectionProperty::getValue() expects exactly 1 parameter, 2 given in %s on line %d
NULL
Wrong type of arg:
Warning: ReflectionProperty::getValue() expects parameter 1 to be object, bool given in %s on line %d
NULL
Instance without property:
Static property / too many args:
string(15) "static property"
Static property / wrong type of arg:
string(15) "static property"
Protected property:
Cannot access non-public member TestClass::prot
Invalid instance:
Fatal error: Uncaught ReflectionException: Given object is not an instance of the class this property was declared in in %s:47
Stack trace:
#0 %s(47): ReflectionProperty->getValue(Object(AnotherClass))
#1 {main}
thrown in %s on line 47