mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
902d64390e
Writing to a proprety that hasn't been declared is deprecated, unless the class uses the #[AllowDynamicProperties] attribute or defines __get()/__set(). RFC: https://wiki.php.net/rfc/deprecate_dynamic_properties
63 lines
1.0 KiB
PHP
63 lines
1.0 KiB
PHP
--TEST--
|
|
Reflection properties are read only
|
|
--FILE--
|
|
<?php
|
|
|
|
#[AllowDynamicProperties]
|
|
class ReflectionMethodEx extends ReflectionMethod
|
|
{
|
|
public $foo = "xyz";
|
|
|
|
function __construct($c,$m)
|
|
{
|
|
echo __METHOD__ . "\n";
|
|
parent::__construct($c,$m);
|
|
}
|
|
}
|
|
|
|
$r = new ReflectionMethodEx('ReflectionMethodEx','getName');
|
|
|
|
var_dump($r->class);
|
|
var_dump($r->name);
|
|
var_dump($r->foo);
|
|
@var_dump($r->bar);
|
|
|
|
try
|
|
{
|
|
$r->class = 'bullshit';
|
|
}
|
|
catch(ReflectionException $e)
|
|
{
|
|
echo $e->getMessage() . "\n";
|
|
}
|
|
try
|
|
{
|
|
$r->name = 'bullshit';
|
|
}
|
|
catch(ReflectionException $e)
|
|
{
|
|
echo $e->getMessage() . "\n";
|
|
}
|
|
|
|
$r->foo = 'bar';
|
|
$r->bar = 'baz';
|
|
|
|
var_dump($r->class);
|
|
var_dump($r->name);
|
|
var_dump($r->foo);
|
|
var_dump($r->bar);
|
|
|
|
?>
|
|
--EXPECT--
|
|
ReflectionMethodEx::__construct
|
|
string(26) "ReflectionFunctionAbstract"
|
|
string(7) "getName"
|
|
string(3) "xyz"
|
|
NULL
|
|
Cannot set read-only property ReflectionMethodEx::$class
|
|
Cannot set read-only property ReflectionMethodEx::$name
|
|
string(26) "ReflectionFunctionAbstract"
|
|
string(7) "getName"
|
|
string(3) "bar"
|
|
string(3) "baz"
|