get_class_vars
函数可以获取所有公共变量,但我想访问私有变量。
我正在从父类尝试获取子类变量...
class A
{
function getvars()
{
/* get private vars from child */
}
}
class B extends A
{
private $name;
}
还有其他方法可以实现这个吗?
get_class_vars
函数可以获取所有公共变量,但我想访问私有变量。
我正在从父类尝试获取子类变量...
class A
{
function getvars()
{
/* get private vars from child */
}
}
class B extends A
{
private $name;
}
还有其他方法可以实现这个吗?
我建议使用PHP的ReflectionClass。特别是getProperties()
调用。
这是PHP文档:
http://www.php.net/manual/zh/reflectionclass.getproperties.php
示例代码如下:
class A
{
function getvars()
{
$reflection = new ReflectionClass($this);
$vars = $reflection->getProperties(ReflectionProperty::IS_PRIVATE);
var_dump($vars);
}
}
class B extends A
{
private $name;
}
请注意,您可以更改getProperties方法中的过滤器,或者完全省略它(这里我仅显示了私有过滤器)。
class TestPrivate {
public $var1;
public $var2;
public $var3;
private $var4;
private $var5;
public $var6;
public function getPrivateVars() {
$reflect = new ReflectionClass(__CLASS__);
$vars = $reflect->getProperties(ReflectionProperty::IS_PRIVATE);
foreach ($vars as $privateVar) {
echo $privateVar->getName() . "<br />";
}
}
}
$instance = new TestPrivate();
$instance->getPrivateVars();
ReflectionObject
对$this
进行操作,以获取私有属性列表并更改其可访问性。
private
? - mario