我有这堂课:
class MyClass {
public $dummy = array('foo', 'bar', 'baz', 'qux');
public $progr = array('HTML', 'CSS', 'JS', 'PHP');
}
我正在尝试将其打印出来:print_r(MyClass)
,但它输出 MyClass 而没有其他内容。我使用echo
,print
,var_dump
和var_export
获得类似的内容。他们似乎将MyClass
视为字符串,因为echo(test)
输出 test 。
那么,我如何列出课程的项目?
答案 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)