如何将PHP对象转换为字符串?

php
2022-08-31 00:15:17

可能的重复:
PHP ToString() 等效

我收到此错误:

Catchable fatal error: Object of class stdClass could not be converted to string

所以,我的问题是,如何在PHP中将对象转换为字符串?不过,我不想序列化它。

只是一个注意:我使用的代码在PHP 4中有效,但在PHP 5中不起作用

谢谢!

编辑:我自己解决了。这很痛苦,但我做到了。无论如何,谢谢大家:-)


答案 1

为什么需要此字符串?如果您只需要将其可视化以进行调试,则可以使用 , 或 将其真正转换为字符串以进行进一步的主题。如果您需要将对象作为文本发送到其他位置(数据库,Javascript代码),则可以选择序列化,json_encode,XML转换等等,具体取决于您的确切情况。var_dump()print_r()$s = print_r($var, 1);


答案 2

您想将PHP对象转换为字符串吗?

如果var_dumpprint_rvar_export序列化json_encode或__toString都不是你所追求的,也许这可以帮助你满足您的需求。

对于 PHP 5.3 及以上版本

<?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())) .'}';

将输出:

stdClass {a: 1, b: 2, c: 3}

对于与以前的 PHP 5 版本兼容的更传统的方法,请尝试

<?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";

这将打印:

ExampleClass {
    private pvt,
    protected prot,
    public pub: public
}

推荐