如何打印对象的所有属性

2022-08-30 07:59:16

我在php页面中有一个未知对象。

如何打印/回显它,以便我可以看到它具有哪些属性/值?

功能呢?有没有办法知道一个对象有什么功能?


答案 1
<?php var_dump(obj) ?>

<?php print_r(obj) ?>

这些也是用于数组的相同内容。

这些将显示 PHP 5 对象的受保护和私有属性。根据手册,将不会显示静态类成员。

如果你想知道成员方法,你可以使用get_class_methods()

$class_methods = get_class_methods('myclass');
// or
$class_methods = get_class_methods(new myclass());
foreach ($class_methods as $method_name) 
{
    echo "$method_name<br/>";
}

相关内容:

get_object_vars()

get_class_vars()

get_class() < -- 用于实例的名称


答案 2

由于没有人没有提供反射API方法,所以这里就像应该完成的那样。

class Person {
    public $name = 'Alex Super Tramp';

    public $age = 100;

    private $property = 'property';
}


$r = new ReflectionClass(new Person);
print_r($r->getProperties());

//Outputs
Array
(
    [0] => ReflectionProperty Object
        (
            [name] => name
            [class] => Person
        )

    [1] => ReflectionProperty Object
        (
            [name] => age
            [class] => Person
        )

    [2] => ReflectionProperty Object
        (
            [name] => property
            [class] => Person
        )

)

使用反射的优点是可以按属性的可见性进行筛选,如下所示:

print_r($r->getProperties(ReflectionProperty::IS_PRIVATE));

由于 Person::$property 是私有的,因此在按IS_PRIVATE进行筛选时会返回:

//Outputs
Array
(
    [0] => ReflectionProperty Object
        (
            [name] => property
            [class] => Person
        )

)

阅读文档!


推荐