Eu acho que essa pergunta é um pouco enganadora, pois toString () em Java não é apenas uma maneira de converter algo em uma String. É isso que a conversão via (string) ou String.valueOf () faz, e também funciona no PHP.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Observe que isso pode ser problemático, pois o Java é do tipo seguro ( veja aqui para mais detalhes ).
Mas, como eu disse, isso está lançando e, portanto, não é o equivalente ao toString () do Java.
toString em Java não apenas converte um objeto em uma String. Em vez disso, fornecerá a representação String . E é isso que __toString () no PHP faz.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
E do outro lado:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
O que quero dizer com "fornecendo a representação String"? Imagine uma aula para uma biblioteca com milhões de livros.
- A conversão dessa classe para uma String (por padrão) converterá os dados, aqui todos os livros, em uma string, para que a String seja muito longa e na maioria das vezes também não seja muito útil.
- Para String, em vez disso, você terá a representação de String, ou seja, apenas o nome da biblioteca. Isso é mais curto e, portanto, fornece menos, mas informações mais importantes.
Ambas são abordagens válidas, mas com objetivos muito diferentes, nem é uma solução perfeita para todos os casos e você deve escolher sabiamente o que melhor se adapta às suas necessidades.
Claro, existem ainda mais opções:
$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 esses métodos retornarão uma String, alguns deles usando __toString internamente e outros falharão em Objetos. Veja a documentação do PHP para mais detalhes.
print_r(foo, true)
)!