Я думаю, что этот Вопрос немного вводит в заблуждение, поскольку
toString () в Java - это не просто способ приведения чего-либо к String, это то, что приведение через (string) или String.valueOf () делает, и это работает так же хорошо в PHP.
//Java
String myText = (string) myVar;
//PHP
$myText = (string) $myVar;
Обратите внимание, что это может быть проблематично, поскольку Java сохраняет типы. Подробнее см. Здесь
Но, как я уже сказал, это Casting и, следовательно, не эквивалент toString () Java.
toString в Java не просто приводит объект к String, он дает вам представление String . И вот что __ toString () в PHP делает
//Java
class SomeClass{
public String toString(){
return 'some string representation';
}
}
//php
class SomeClass{
public function __toString()
{
return 'some string representation';
}
}
А с другой стороны:
//Java
new SomeClass().toString();//'some string representation'
//PHP
strval(new SomeClass);//'some string representation'
Что я имею в виду под "представлением String"?
Представьте себе класс для библиотеки с миллионами книг.
- Преобразование этого класса в строку (по умолчанию) преобразует данные, в том числе все книги, в строку, поэтому строка будет очень длинной и большую часть времени не очень полезной.
- В String insted даст вам представление String, то есть только имя библиотеки. Это короче и поэтому дает вам меньше, но более важную информацию.
Это оба действительные подходы, но с очень разными целями, neigter является идеальным решением для каждого случая, и вам нужно выбирать мудро, который лучше подходит для ваших нужд.
Конечно, есть еще больше вариантов:
$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 concat an empty string works too
Все эти методы будут возвращать String, некоторые из них будут использовать внутреннюю __toString, некоторые другие потерпят неудачу в Objcts. Для получения более подробной информации обратитесь к PHP-документации .