Java의 toString ()이 문자열로 무언가를 캐스팅하는 방법이 아니기 때문에이 질문은 약간 오해의 소지가 있다고 생각합니다. 이것이 (string) 또는 String.valueOf ()를 통한 캐스팅 이며 PHP에서도 잘 작동합니다.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Java는 형식이 안전하므로 문제가 될 수 있습니다 ( 자세한 내용은 여기 참조 ).
그러나 내가 말했듯이, 이것은 캐스팅이므로 Java의 toString ()과 동일하지 않습니다.
Java의 toString 은 객체를 String으로 캐스팅하지 않습니다. 대신 String 표현을 제공합니다 . 그리고 이것이 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"
"문자열 표현 제공"은 무엇을 의미합니까? 수백만 권의 책이있는 도서관의 수업을 상상해보십시오.
- 해당 클래스를 문자열로 캐스트하면 기본적으로 모든 책의 데이터가 문자열로 변환되므로 문자열이 매우 길고 대부분 유용하지 않습니다.
- 대신 문자열을 사용하면 문자열 표현, 즉 라이브러리 이름 만 제공됩니다. 이 정보는 더 짧아서 덜 중요한 정보를 제공합니다.
이것들은 모두 유효한 접근법이지만 매우 다른 목표를 가지고 있으며, 모든 경우에 완벽한 솔루션이 아니며 귀하의 요구에 더 잘 맞는 현명한 선택을해야합니다.
물론 더 많은 옵션이 있습니다.
$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 설명서 를 참조하십시오.
print_r(foo, true)
)!