可能重复:
PHP ToString()等效
我收到此错误:
Catchable fatal error: Object of class stdClass could not be converted to string
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,如何在PHP中将对象转换为字符串?我不想序列化它.
请注意:我使用的代码适用于PHP 4,但不适用于PHP 5
谢谢!
编辑:我自己解决了.这是一种痛苦,但我做到了.无论如何,谢谢大家:-)
Wim*_*Wim 21
你为什么需要这个字符串?如果您只需要将其可视化以进行调试,则可以使用var_dump(),print_r(),或者$s = print_r($var, 1);将其真正地转换为字符串以进行进一步的主题化.如果您需要将对象作为文本发送到其他地方(数据库,Javascript代码),您可以选择序列化,json_encode,XML转换等等,具体取决于您的具体情况.
如果var_dump,print_r,var_export,serialize,json_encode或__toString都不是您想要的,也许这可以帮助您满足需要。
<?php
$v = (object) array('a' => 1, 'b' => 2, 'c' => 3);
$r = new ReflectionObject($v);
echo $r->getName() .' {' . implode(', ', array_map(
function($p) use ($v) {
$p->setAccessible(true);
return $p->getName() .': '. $p->getValue($v);
}, $r->getProperties())) .'}';
Run Code Online (Sandbox Code Playgroud)
将输出:
stdClass {a: 1, b: 2, c: 3}
Run Code Online (Sandbox Code Playgroud)
<?php
class ExampleClass {
private $pvt = 'private';
protected $prot = 'protected';
public $pub = 'public';
}
$v = new ExampleClass();
$r = new ReflectionObject($v);
echo $r->getName() ." {\n";
foreach ($r->getProperties() as $p)
if ($p->isPublic())
echo "\tpublic ".$p->getName().': '.$p->getValue($v)."\n";
else
echo "\t".($p->isPrivate()?'private ':'protected ').$p->getName().",\n";
echo "}\n";
Run Code Online (Sandbox Code Playgroud)
将打印:
ExampleClass {
protected pvt,
protected prot,
public pub: public
}
Run Code Online (Sandbox Code Playgroud)