Ich denke, diese Frage ist etwas irreführend, da toString () in Java nicht nur eine Möglichkeit ist, etwas in einen String umzuwandeln. Das ist es, was Casting über (string) oder String.valueOf () macht, und es funktioniert auch in PHP.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Beachten Sie, dass dies problematisch sein kann, da Java typsicher ist ( weitere Informationen finden Sie hier ).
Aber wie gesagt, dies ist Casting und daher nicht das Äquivalent von Java toString ().
toString in Java wandelt nicht nur ein Objekt in einen String um. Stattdessen erhalten Sie die Zeichenfolgendarstellung . Und genau das macht __toString () in PHP.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
Und von der anderen Seite:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
Was meine ich mit "Geben der String-Darstellung"? Stellen Sie sich eine Klasse für eine Bibliothek mit Millionen von Büchern vor.
- Das Umwandeln dieser Klasse in einen String würde (standardmäßig) die Daten, hier alle Bücher, in einen String konvertieren, sodass der String sehr lang und meistens auch nicht sehr nützlich wäre.
- Wenn Sie stattdessen auf String setzen, erhalten Sie die String-Darstellung, dh nur den Namen der Bibliothek. Dies ist kürzer und gibt Ihnen daher weniger, aber wichtigere Informationen.
Dies sind beide gültige Ansätze, aber mit sehr unterschiedlichen Zielen. Keiner ist eine perfekte Lösung für jeden Fall, und Sie müssen mit Bedacht auswählen, welcher besser zu Ihren Anforderungen passt.
Klar, es gibt noch mehr Möglichkeiten:
$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
Alle diese Methoden geben einen String zurück, einige verwenden __toString intern und andere schlagen bei Objekten fehl. Weitere Informationen finden Sie in der PHP-Dokumentation .
print_r(foo, true)
)!