mirror of
https://github.com/php/php-src.git
synced 2025-08-18 06:58:55 +02:00

Make sure we still perform a zpp check for the static case, and also always enforce that the parameter is ?object. Otherwise we violate the specified signature.
69 lines
1.5 KiB
PHP
69 lines
1.5 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 "\nInstance without property:\n";
|
|
$propInfo = new ReflectionProperty('TestClass', 'stat');
|
|
|
|
echo "\nStatic property / too many args:\n";
|
|
try {
|
|
var_dump($propInfo->getValue($instance, true));
|
|
} catch (TypeError $e) {
|
|
echo $e->getMessage(), "\n";
|
|
}
|
|
|
|
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');
|
|
try {
|
|
var_dump($propInfo->getValue($invalidInstance));
|
|
} catch (ReflectionException $e) {
|
|
echo $e->getMessage();
|
|
}
|
|
|
|
echo "\n\nMissing instance:\n";
|
|
try {
|
|
var_dump($propInfo->getValue());
|
|
} catch (TypeError $e) {
|
|
echo $e->getMessage();
|
|
}
|
|
|
|
?>
|
|
--EXPECT--
|
|
Instance without property:
|
|
|
|
Static property / too many args:
|
|
ReflectionProperty::getValue() expects at most 1 parameter, 2 given
|
|
|
|
Protected property:
|
|
Cannot access non-public member TestClass::$prot
|
|
|
|
Invalid instance:
|
|
Given object is not an instance of the class this property was declared in
|
|
|
|
Missing instance:
|
|
No object provided for getValue() on instance property
|