如何在PHP中打印类的项?

如何在PHP中打印类的项?,php,Php,我有这门课: class MyClass { public $dummy = array('foo', 'bar', 'baz', 'qux'); public $progr = array('HTML', 'CSS', 'JS', 'PHP'); } 我正试图打印出来:print\r(MyClass),但它只输出MyClass而不输出其他内容。我在echo、print、var\u dump和var\u export中得到了类似的结果。似乎他们将MyClass视为一个字符串,因

我有这门课:

class MyClass {
    public $dummy = array('foo', 'bar', 'baz', 'qux');
    public $progr = array('HTML', 'CSS', 'JS', 'PHP');
}
我正试图打印出来:
print\r(MyClass)
,但它只输出MyClass而不输出其他内容。我在
echo
print
var\u dump
var\u export
中得到了类似的结果。似乎他们将
MyClass
视为一个字符串,因为
echo(test)
输出test

那么,如何列出类的项呢?

在类的实例上使用,并可以选择使用以获取实例中的属性值:

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

foreach ($rc->getProperties() as $property) {
    printf('%s = %s', $property->getName(), print_r($property->getValue(), true));
}
再想一想,如果你只是想得到一个对象的属性值,那么也可以

还有一件事

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

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

在类的实例上使用,也可以选择使用以获取实例中的属性值:

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

foreach ($rc->getProperties() as $property) {
    printf('%s = %s', $property->getName(), print_r($property->getValue(), true));
}
再想一想,如果你只是想得到一个对象的属性值,那么也可以

还有一件事

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


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

您实例化了它吗

这个输出是什么:

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

你实例化了吗

这个输出是什么:

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


和print_r()

有时,实现类的_u-toString魔术方法也会有所帮助。简言之,_utoString允许您精确指定对象在回声时的行为。有关更多信息,请参见以下内容:

我喜欢使用_-toString作为调试工具,尽管我确信该方法的真正潜力要深远得多:)


希望这会有所帮助。

有时候,实现类的uuu-toString魔术方法也会有所帮助。简言之,_utoString允许您精确指定对象在回声时的行为。有关更多信息,请参见以下内容:

我喜欢使用_-toString作为调试工具,尽管我确信该方法的真正潜力要深远得多:)


希望能有所帮助。

谢谢
print\r(new MyClass())
对我来说似乎很好——谢谢你提醒我使用
new
——但是
ReflectionClass
这个东西也不错;会更合适是的,我的太过分了,我想我需要睡觉。谢谢
print\r(new MyClass())
对我来说似乎很好——谢谢你提醒我使用
new
——但是
ReflectionClass
这个东西也不错;会更合适是的,我的太过分了,我想我需要睡眠。我在类中思考的比在对象中思考的更多,因此我使用了反射+1对于一个更简单的解决方案,我同意这并不完全是OP所问的(“那么,我如何才能列出一个类的项呢?”)。我建议这是一种获得类似结果的简单方法,尽管我认为你的答案在这里是正确的。我接受你的答案,因为两者都做我想要的,但你的答案比@BoltClock的要简单一些。我在类中思考的比在对象中思考的更多,因此我使用了reflecion+1对于一个更简单的解决方案,我同意这并不完全是OP所问的(“那么,我如何才能列出一个类的项呢?”)。我建议这是一个获得类似结果的简单方法,尽管我认为你的答案在这里是正确的。我接受你的答案,因为两者都做了我想要的,但你的答案比@BoltClock的要简单一些。