PHP - 打印对象的所有属性

时间:2010-06-14 00:51:49

标签: php debugging

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

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

功能怎么样?有没有办法知道对象有什么功能?

7 个答案:

答案 0 :(得分:77)

<?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()&lt; - 表示实例的名称

答案 1 :(得分:10)

由于没有人提供OO方法,所以就像这样做。

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
        )

)

阅读文档!

答案 2 :(得分:5)

var_dump($obj); 

如果您想了解更多信息,可以使用ReflectionClass:

http://www.phpro.org/manual/language.oop5.reflection.html

答案 3 :(得分:4)

我真的很喜欢dBug。我通常将var_dump()用于标量(int,string,boolean等)和dBug用于数组和对象。

来自官方网站的对象截图:

alt text

答案 4 :(得分:2)

尝试使用Pretty Dump它对我很有用

答案 5 :(得分:1)

了解对象属性var_dump(object)是最好的方法。它将显示与之关联的所有公共,私有和受保护属性,而不知道类名。

但是在方法的情况下,你需要知道类名,否则我认为很难得到对象的所有相关方法。

答案 6 :(得分:-1)

<?php
    echo "<textarea name='mydata'>\n";
    echo htmlspecialchars($data)."\n";
    echo "</textarea>";
?>