我认为这个问题有点误导,因为,
Java 中的 toString() 不仅仅是一种将某些内容转换为字符串的方法。这就是casting via (string) 或 String.valueOf() 所做的,它在 PHP 中也同样有效。
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
请注意,这可能会有问题,因为 Java 是类型安全的 (see here for more details)。
但正如我所说,这是强制转换,因此不等同于 Java 的 toString()。
Java 中的 toString 不只是将对象转换为字符串。相反,它会给你字符串表示。这就是 PHP 中的 __toString() 所做的。
// 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"
“给出字符串表示”是什么意思?
想象一下为拥有数百万本书的图书馆开设的课程。
- 将该类转换为字符串会(默认情况下)将数据(此处为所有书籍)转换为字符串,因此字符串会很长,而且大多数时候也不是很有用。
- To String 将为您提供 String 表示形式,即只有库的名称。这更短,因此为您提供的信息更少,但更重要。
这些都是有效的方法,但目标却大相径庭,都不是适合每种情况的完美解决方案,您必须明智地选择更适合您需求的方法。
当然,还有更多选择:
$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
所有这些方法都将返回一个字符串,其中一些在内部使用 __toString,而另一些则在对象上失败。查看PHP documentation了解更多详情。