Creo que esta pregunta es un poco engañosa ya que toString () en Java no es solo una forma de transmitir algo a una cadena. Eso es lo que hace la conversión a través de (string) o String.valueOf (), y también funciona en PHP.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Tenga en cuenta que esto puede ser problemático ya que Java es de tipo seguro ( consulte aquí para obtener más detalles ).
Pero como dije, esto es casting y, por lo tanto, no es el equivalente de toString () de Java.
toString en Java no solo convierte un objeto en una cadena. En su lugar, le dará la representación de cadena . Y eso es lo que hace __toString () en PHP.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
Y desde el otro lado:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
¿Qué quiero decir con "dar la representación de cadena"? Imagine una clase para una biblioteca con millones de libros.
- Convertir esa clase en una Cadena convertiría (por defecto) los datos, aquí todos los libros, en una cadena, por lo que la Cadena sería muy larga y la mayoría de las veces tampoco sería muy útil.
- To String en su lugar le dará la representación de String, es decir, solo el nombre de la biblioteca. Esto es más corto y, por lo tanto, le brinda menos, pero más información importante.
Ambos son enfoques válidos pero con objetivos muy diferentes, ninguno de los dos es una solución perfecta para cada caso y debe elegir sabiamente cuál se adapta mejor a sus necesidades.
Claro, hay aún más opciones:
$no = 421337 // A number in PHP
$str = "$no"; // In PHP, stuff inside "" is calculated and variables are replaced
$str = print_r($no, true); // Same as String.format();
$str = settype($no, 'string'); // Sets $no to the String Type
$str = strval($no); // Get the string value of $no
$str = $no . ''; // As you said concatenate an empty string works too
Todos estos métodos devolverán una Cadena, algunos de ellos usando __toString internamente y otros fallarán en Objetos. Consulte la documentación de PHP para obtener más detalles.
print_r(foo, true)
)!