ReflectionProperty::__construct
(PHP 5, PHP 7)
ReflectionProperty :: __构造 - 构造一个ReflectionProperty对象
描述
public ReflectionProperty::__construct ( mixed $class , string $name )
警告
此功能目前没有记录; 只有它的参数列表可用。
参数
class
包含该属性的类名称。
name
所反映的财产的名称。
返回值
没有值返回。
错误/异常
尝试获取或设置私有或受保护的类属性的值将导致引发异常。
例子
Example#1 ReflectionProperty :: __ construct()示例
<?php
class?Str
{
????public?$length??=?5;
}
//?Create?an?instance?of?the?ReflectionProperty?class
$prop?=?new?ReflectionProperty('Str',?'length');
//?Print?out?basic?information
printf(
????"===>?The%s%s%s%s?property?'%s'?(which?was?%s)\n"?.
????"?????having?the?modifiers?%s\n",
????????$prop->isPublic()???'?public'?:?'',
????????$prop->isPrivate()???'?private'?:?'',
????????$prop->isProtected()???'?protected'?:?'',
????????$prop->isStatic()???'?static'?:?'',
????????$prop->getName(),
????????$prop->isDefault()???'declared?at?compile-time'?:?'created?at?run-time',
????????var_export(Reflection::getModifierNames($prop->getModifiers()),?1)
);
//?Create?an?instance?of?Str
$obj=?new?Str();
//?Get?current?value
printf("--->?Value?is:?");
var_dump($prop->getValue($obj));
//?Change?value
$prop->setValue($obj,?10);
printf("--->?Setting?value?to?10,?new?value?is:?");
var_dump($prop->getValue($obj));
//?Dump?object
var_dump($obj);
?>
上面的例子会输出类似于:
===> The public property 'length' (which was declared at compile-time)
having the modifiers array (
0 => 'public',
)
---> Value is: int(5)
---> Setting value to 10, new value is: int(10)
object(Str)#2 (1) {
["length"]=>
int(10)
}
示例#2使用 ReflectionProperty类从私有和受保护属性获取值
<?php
class?Foo?{
????public?$x?=?1;
????protected?$y?=?2;
????private?$z?=?3;
}
$obj?=?new?Foo;
$prop?=?new?ReflectionProperty('Foo',?'y');
$prop->setAccessible(true);?/*?As?of?PHP?5.3.0?*/
var_dump($prop->getValue($obj));?//?int(2)
$prop?=?new?ReflectionProperty('Foo',?'z');
$prop->setAccessible(true);?/*?As?of?PHP?5.3.0?*/
var_dump($prop->getValue($obj));?//?int(2)
?>
上面的例子会输出类似于:
int(2)
int(3)
← ReflectionProperty::__clone
ReflectionProperty::export →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com