如何在php中将对象转换为字符串

JJ.*_*JJ. 72 php

可能重复:
PHP ToString()等效

如何在php中将对象转换为字符串

实际上我正在处理Web服务API.我想使用一个API的输出作为另一个API的输入.当我试图这样做时,我得到这样的错误:可捕获的致命错误:类std的对象无法转换为C:\中的字符串...

这是第一个API :: stdClass对象([document_number] => 10ba60)的输出,现在我只想将该数字用作第二个AP的输入

print_r和_string()在我的情况下都不起作用

Gre*_*g K 75

您可以通过__toString()在类中实现一个方法来定制对象如何表示为字符串,这样当您的对象被类型转换为字符串(显式类型转换$str = (string) $myObject;或自动echo $myObject)时,您可以控制包含的内容和字符串格式.

如果您只想显示对象的数据,则上述方法可行.如果要将对象存储在会话或数据库中,则需要对其进行序列化,以便PHP知道如何重构实例.

一些代码来证明差异:

class MyObject {

  protected $name = 'JJ';

  public function __toString() {
    return "My name is: {$this->name}\n";
  }

}

$obj = new MyObject;

echo $obj;
echo serialize($obj);
Run Code Online (Sandbox Code Playgroud)

输出:

我的名字是:JJ

○:8: "为MyObject":1:{S:7: "*名"; S:2: "JJ";}

  • 这是在我的回答之前吗?!对不起,没看到.删除了我的,赞成你的. (2认同)

Web*_*euw 31

使用铸造操作员 (string)$yourObject;

  • 仅当对象可以转换为字符串时才起作用,例如implements __toString().显然,它在这种情况下并不存在. (17认同)

rem*_*rel 12

你有print_r功能DOC


Wol*_*lph 8

有一个对象序列化模块,使用serialize函数可以序列化任何对象.

  • 但是,如果对象具有复杂的数据类型或资源,则应使用魔术函数=> http://php.net/manual/en/language.oop5.magic.php来处理它,例如__wakeup或__sleep来序列化反序列化资源或复杂数据类型。 (2认同)

Tom*_*ski 5

在你的情况下,你应该简单地使用

$firstapiOutput->document_number
Run Code Online (Sandbox Code Playgroud)

作为第二个api的输入.