Penso che questa domanda sia un po 'fuorviante poiché toString () in Java non è solo un modo per trasmettere qualcosa a una stringa. Questo è ciò che fa il casting tramite (string) o String.valueOf (), e funziona anche in PHP.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Si noti che ciò può essere problematico in quanto Java è sicuro per i tipi ( vedere qui per maggiori dettagli ).
Ma come ho detto, questo è il casting e quindi non l'equivalente di toString () di Java.
toString in Java non si limita a lanciare un oggetto in una stringa. Ti darà invece la rappresentazione String . Ed è quello che fa __toString () in PHP.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
E dall'altra parte:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
Cosa intendo per "dare la rappresentazione String"? Immagina un corso per una biblioteca con milioni di libri.
- Il cast di quella classe in una stringa convertirà (di default) i dati, qui tutti i libri, in una stringa in modo che la stringa sia molto lunga e il più delle volte non molto utile.
- String invece ti darà la rappresentazione String, cioè solo il nome della libreria. Questo è più breve e quindi ti dà meno, ma informazioni più importanti.
Questi sono entrambi approcci validi ma con obiettivi molto diversi, né è una soluzione perfetta per ogni caso e devi scegliere saggiamente che si adatta meglio alle tue esigenze.
Certo, ci sono ancora più opzioni:
$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
Tutti questi metodi restituiranno una stringa, alcuni usando internamente __toString e altri falliranno su Oggetti. Dai un'occhiata alla documentazione di PHP per maggiori dettagli.
print_r(foo, true)
)!