PHP 反射类。如何获取属性的值?

发布于 2024-10-17 11:56:55 字数 384 浏览 2 评论 0原文

我在 PHP 中使用反射类,但我不知道如何获取反射实例中的属性值。有可能吗?

代码:

<?php

class teste {

    public $name;
    public $age;

}

$t = new teste();
$t->name = 'John';
$t->age = '23';

$api = new ReflectionClass($t);

foreach($api->getProperties() as $propertie)
{
    print $propertie->getName() . "\n";
}

?>

如何获取 foreach 循环内的属性值?

此致,

I'm using the reflection class in PHP, but I'm with no clues on how to get the values of the properties in the reflection instance. It is possible?

The code:

<?php

class teste {

    public $name;
    public $age;

}

$t = new teste();
$t->name = 'John';
$t->age = '23';

$api = new ReflectionClass($t);

foreach($api->getProperties() as $propertie)
{
    print $propertie->getName() . "\n";
}

?>

How can I get the propertie values inside the foreach loop?

Best Regards,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼角的笑意。 2024-10-24 11:56:55

怎么样

在你的情况下:

foreach ($api->getProperties() as $propertie)
{
    print $propertie->getName() . "\n";
    print $propertie->getValue($t);
}

顺便说一句,由于你的对象只有公共成员,你也可以 直接迭代

foreach ($t as $propertie => $value)
{
    print $propertie . "\n";
    print $value;
}

或使用 get_object_vars 放入数组中。

How about

In your case:

foreach ($api->getProperties() as $propertie)
{
    print $propertie->getName() . "\n";
    print $propertie->getValue($t);
}

On a sidenote, since your object has only public members, you could just as well iterate it directly

foreach ($t as $propertie => $value)
{
    print $propertie . "\n";
    print $value;
}

or fetch them with get_object_vars into an array.

檐上三寸雪 2024-10-24 11:56:55

另一种方法是使用 getDefaultProperties() 方法(如果您不想)实例化该类,例如

$api->getDefaultProperties();

这是您要查找的完整示例...

class teste {

    public $name;
    public $age;

}

$api = new ReflectionClass('teste');
var_dump($api->getDefaultProperties());

注意:您还可以在该 ReflectionClass 内使用名称空间。例如,

$class = new ReflectionClass('Some\Namespaced\Class');
var_dump($class->getDefaultProperties());

Another method is to use the getDefaultProperties() method, if you don't want to instantiate that class, eg.

$api->getDefaultProperties();

Here's your full example reduced to what you're looking for...

class teste {

    public $name;
    public $age;

}

$api = new ReflectionClass('teste');
var_dump($api->getDefaultProperties());

Note: you can also use namespaces inside of that ReflectionClass. eg,

$class = new ReflectionClass('Some\Namespaced\Class');
var_dump($class->getDefaultProperties());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文