Je pense que cette question est un peu trompeuse car, toString () en Java n'est pas seulement un moyen de lancer quelque chose sur une chaîne. C'est ce que fait le cast via (string) ou String.valueOf (), et cela fonctionne aussi bien en PHP.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Notez que cela peut être problématique car Java est de type sécurisé ( voir ici pour plus de détails ).
Mais comme je l'ai dit, c'est du casting et donc pas l'équivalent de toString () de Java.
toString en Java ne transforme pas simplement un objet en chaîne. Il vous donnera à la place la représentation String . Et c'est ce que fait __toString () en PHP.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
Et de l'autre côté:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
Qu'est-ce que je veux dire par "donner la représentation de la chaîne"? Imaginez une classe pour une bibliothèque avec des millions de livres.
- Transformer cette classe en une chaîne convertirait (par défaut) les données, ici tous les livres, en une chaîne, de sorte que la chaîne serait très longue et la plupart du temps pas très utile non plus.
- À la place, vous obtiendrez la représentation String, c'est-à-dire uniquement le nom de la bibliothèque. C'est plus court et vous donne donc moins d'informations, mais plus importantes.
Ce sont deux approches valides mais avec des objectifs très différents, aucune n'est une solution parfaite pour chaque cas et vous devez choisir judicieusement ce qui convient le mieux à vos besoins.
Bien sûr, il y a encore plus d'options:
$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
Toutes ces méthodes renverront une chaîne, certaines utilisant __toString en interne et d'autres échouant sur les objets. Jetez un œil à la documentation PHP pour plus de détails.
print_r(foo, true)
)!