Bu soru biraz yanıltıcı olduğunu düşünüyorum, çünkü Java toString () sadece bir String bir şey dökmek için bir yol değildir. (String) veya String.valueOf () üzerinden döküm budur ve PHP'de de çalışır.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Java türünün güvenli olması nedeniyle bunun sorunlu olabileceğini unutmayın ( daha fazla ayrıntı için buraya bakın ).
Ama dediğim gibi, bu döküm ve bu nedenle Java'nın toString () eşdeğeri değil.
Java'da toString yalnızca bir nesneyi bir String'e dökmekle kalmaz. Bunun yerine Dize temsilini verecektir . Ve PHP'de __toString () bunu yapar.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
Ve diğer taraftan:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
"Dize temsili vererek" ne demek? Milyonlarca kitabı olan bir kütüphane için bir sınıf düşünün.
- Bu sınıfı bir String'e atamak (varsayılan olarak) verileri, burada tüm kitapları bir string'e dönüştürür, böylece String çok uzun olur ve çoğu zaman da çok yararlı olmaz.
- Bunun yerine Dize size Dize temsilini, yani yalnızca kitaplığın adını verecektir. Bu daha kısadır ve bu nedenle size daha az ama daha önemli bilgiler verir.
Her ikisi de geçerli yaklaşımlardır, ancak çok farklı hedeflerle, her durum için mükemmel bir çözüm değildir ve ihtiyaçlarınız için daha uygun olanı akıllıca seçmelisiniz.
Elbette, daha da fazla seçenek var:
$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
Bu yöntemlerin tümü bir dize döndürür, bazıları dahili olarak __toString kullanır ve bazıları Nesnelerde başarısız olur. Bir göz atın PHP belgelerine fazla ayrıntı için.
print_r(foo, true)
)!