Myślę, że to pytanie jest nieco mylące, ponieważ toString () w Javie to nie tylko sposób na rzutowanie czegoś na String. Tak właśnie działa casting przez (string) lub String.valueOf () i działa również w PHP.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Zauważ, że może to być problematyczne, ponieważ Java jest bezpieczna dla typu ( więcej informacji znajdziesz tutaj ).
Ale jak powiedziałem, jest to rzutowanie, a zatem nie jest odpowiednikiem metody JavaString ().
toString w Javie nie tylko rzutuje obiekt na String. Zamiast tego da ci reprezentację ciągu . I właśnie to robi __toString () w PHP.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
A z drugiej strony:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
Co mam na myśli przez „przedstawienie reprezentacji ciągu”? Wyobraź sobie klasę dla biblioteki z milionami książek.
- Rzutowanie tej klasy na łańcuch znaków (domyślnie) przekształciłoby dane, tutaj wszystkie książki, w łańcuch znaków, dzięki czemu łańcuch byłby bardzo długi i przez większość czasu nie byłby zbyt przydatny.
- To String zamiast tego da ci reprezentację String, tj. Tylko nazwę biblioteki. Jest to krótsze i dlatego daje mniej, ale ważniejsze informacje.
Oba są słuszne podejścia, ale mają bardzo różne cele, żadne nie jest idealnym rozwiązaniem dla każdego przypadku i musisz mądrze wybrać, który najlepiej pasuje do twoich potrzeb.
Jasne, jest jeszcze więcej opcji:
$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
Wszystkie te metody zwrócą String, niektóre z nich używają __toString wewnętrznie, a inne zawiodą na Obiektach. Więcej informacji znajdziesz w dokumentacji PHP .
print_r(foo, true)
)!