Tôi nghĩ rằng câu hỏi này hơi sai lệch vì, toString () trong Java không chỉ là một cách để truyền một cái gì đó vào Chuỗi. Đó là những gì truyền qua (chuỗi) hoặc String.valueOf (), và nó hoạt động tốt trong PHP.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Lưu ý rằng điều này có thể có vấn đề vì Java là loại an toàn ( xem tại đây để biết thêm chi tiết ).
Nhưng như tôi đã nói, điều này đang truyền và do đó không tương đương với toString () của Java.
toString trong Java không chỉ truyền một đối tượng thành Chuỗi. Nó thay vào đó sẽ cung cấp cho bạn đại diện String . Và đó là những gì __toString () trong PHP làm.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
Và từ phía bên kia:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
Ý tôi là gì khi "đưa ra biểu diễn String"? Hãy tưởng tượng một lớp học cho một thư viện với hàng triệu cuốn sách.
- Việc truyền lớp đó thành Chuỗi sẽ (theo mặc định) chuyển đổi dữ liệu, ở đây tất cả các sách, thành một chuỗi để Chuỗi sẽ rất dài và hầu hết thời gian cũng không hữu ích lắm.
- Thay vào đó, Chuỗi sẽ cung cấp cho bạn biểu diễn Chuỗi, tức là chỉ tên của thư viện. Điều này ngắn hơn và do đó cung cấp cho bạn ít hơn, nhưng thông tin quan trọng hơn.
Đây là cả hai cách tiếp cận hợp lệ nhưng với các mục tiêu rất khác nhau, không phải là một giải pháp hoàn hảo cho mọi trường hợp và bạn phải chọn một cách khôn ngoan phù hợp hơn với nhu cầu của bạn.
Chắc chắn, có nhiều lựa chọn hơn:
$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
Tất cả các phương thức này sẽ trả về một Chuỗi, một số trong số chúng sử dụng __toString bên trong và một số phương thức khác sẽ thất bại trên Đối tượng. Hãy xem tài liệu PHP để biết thêm chi tiết.
print_r(foo, true)
)!