2010-03-18 22 views
50

Possible Duplicate:
PHP ToString() equivalentcómo convertir objeto en cadena en PHP

cómo convertir objeto en cadena en PHP

En realidad estoy tratando con APIs.i servicios web desea utilizar salida de una API como una entrada para otro API. cuando trato de hacer esto, recibo un error como este: Error fatal capturable: el objeto de clase std no se puede convertir a cadena en C: \ ...

esta es la salida del primer objeto API :: stdClass ([document_number] => 10ba60) ahora sólo quiero que ese número se utiliza como entrada para el segundo AP

print_r y _STRING() ambos no están trabajando en mi caso

+3

¿te refieres a convertirlo en una cuerda, como lo harías en C? ¿O ver una representación visual directa de los datos que contiene? – Cam

+0

En realidad, me ocupo de las API de servicios web. Quiero utilizar la salida de una API como entrada para otra API. cuando trato de hacer esto obtengo un error como este: Error fatal capturable: el objeto de la clase std no se pudo convertir a cadena en C: \ .... –

+0

Creo que tendrá que darnos más detalles. El error muestra que otra API utiliza el retorno del primero como una cadena. Creo que todo depende de qué información devuelve la primera API y qué información necesita la segunda API. –

Respuesta

6

que tienen la función print_r DOC

5

Hay un módulo object serialization, con la función serialize puede serializar cualquier objeto.

+1

pero si el objeto tiene tipos de datos o recursos complejos, debe trabajar con él usando funciones mágicas => http://php.net/manual/en/language.oop5.magic.php como __wakeup o __sleep to serializar deserializar recursos o tipos de datos complejos. – markcial

+1

De acuerdo con php.net, cuando se usa serialize(), se intenta llamar a __wakeup/__ sleep en el momento apropiado de forma automática, por lo que todo lo que tiene que preocuparse es realmente implementar las funciones por sí mismos. Sin embargo, creo que esto es un poco más allá de lo que serían los requisitos del OP. – Cam

21

utilizar el operador de fundición (string)$yourObject;

+14

Funciona solo si el objeto se puede convertir en cadena, p. implementa __toString(). Lo cual no ocurre en este caso, al parecer. –

+0

Esto funciona mejor para convertir valores de objeto en cadena, es decir. (cadena) $ object-> value Bastante útil cuando tenemos tipos mixtos para devolver. –

58

Puede adaptar la forma en que su objeto se representa como una cadena mediante la implementación de un método __toString() en su clase, por lo que cuando su objeto es type cast as a string (tipo explícita fundido $str = (string) $myObject;, o automático echo $myObject) puedes controlar lo que está incluido y el formato de cadena.

Si solo desea mostrar los datos de su objeto, el método anterior funcionaría. Si desea almacenar su objeto en una sesión o base de datos, necesita serialize, por lo que PHP sabe cómo reconstruir su instancia.

algo de código para demostrar la diferencia:

class MyObject { 

    protected $name = 'JJ'; 

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

} 

$obj = new MyObject; 

echo $obj; 
echo serialize($obj); 

Salida:

My name is: JJ

O:8:"MyObject":1:{s:7:"*name";s:2:"JJ";}

+0

Eso no es serialización. Aparte de la parte de serialización, esta es una muy buena explicación (especialmente la parte sobre _implementing_ __toString()) – Cam

+0

Está en lo cierto gracias, he modificado mi respuesta. –

+1

¿Estaba aquí antes de mi respuesta? Lo siento, no lo vi. Suprimido el mío, vota tuyo. – Gordon

5

En su caso, usted debe utilizar simplemente

$firstapiOutput->document_number 

como la entrada para el segundo API.

+1

+1 Esto parece ser el enfoque lógico del "problema" – Ben

Cuestiones relacionadas