如何在PHP中打印类的项目?

时间:2011-01-29 20:04:42

标签: php

我有这堂课:

class MyClass {
    public $dummy = array('foo', 'bar', 'baz', 'qux');
    public $progr = array('HTML', 'CSS', 'JS', 'PHP');
}

我正在尝试将其打印出来:print_r(MyClass),但它输出 MyClass 而没有其他内容。我使用echoprintvar_dumpvar_export获得类似的内容。他们似乎将MyClass视为字符串,因为echo(test)输出 test

那么,我如何列出课程的项目?

4 个答案:

答案 0 :(得分:3)

在您的课程实例上使用ReflectionClass,并可选择使用ReflectionProperty获取您实例中的属性值:

$rc = new ReflectionClass(new MyClass());

foreach ($rc->getProperties() as $property) {
    printf('%s = %s', $property->getName(), print_r($property->getValue(), true));
}

第二个想法,如果您只想获取对象属性的值,那么mingos' answer using print_r(new MyClass());也可以。

另一件事,

  

他们似乎将MyClass视为字符串,因为echo(test)输出 test

这是正常的:PHP首先将它们视为常量名称,但如果它找不到用这些名称定义的常量,那么它会将它们视为不带引号的字符串文字。

答案 1 :(得分:3)

你实例化了吗?

这是什么输出:

$m = new MyClass();
print_r($m);

答案 2 :(得分:2)

有时,实现类的__toString魔术方法也会有所帮助。简而言之,__ toString允许您准确指定对象在回显时的行为方式。有关详细信息,请参阅以下内容:

http://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring

我喜欢使用__toString作为调试工具,但我确信该方法的真正潜力更为深远:)

希望有所帮助。

答案 3 :(得分:1)