function phpwtf(string $s) {
echo "$s\n";
}
phpwtf("Type hinting is da bomb");
Yakalanabilir ölümcül hata: phpwtf geçirilen değişken 1 () dize bir örnek olmalı, dize verilen
PHP aynı nefeste İstediğiniz türü tanımak ve reddetmek görmek için biraz Orwell'in daha bulunuyor. There are five lights, damn it.
PHP dizeleri için ipucu türü eşdeğer nedir?
Burada oluyor tam olarak ne anlatıyor cevap Bonus husustur.
Summary
Hata mesajı büyük bir nedenden dolayı kafa karıştırıcı:
Primitive type names are not reserved in PHP
Aşağıdaki tüm geçerli sınıf bildirimleri şunlardır:
class string { }
class int { }
class float { }
class double { }
Benim hata hata mesajı dize ilkel türü yalnızca atıfta olduğunu düşünerek oldu - kelime 'örnek' pause bana vermiş olması gerekir. Daha da açıklamak için bir örnek:
class string { }
$n = 1234;
$s1 = (string)$n;
$s2 = new string();
$a = array('no', 'yes');
printf("\$s1 - primitive string? %s - string instance? %s\n",
$a[is_string($s1)], $a[is_a($s1, 'string')]);
printf("\$s2 - primitive string? %s - string instance? %s\n",
$a[is_string($s2)], $a[is_a($s2, 'string')]);
Çıktı:
$ S1 - ilkel bir dize? evet - dize örneği? hayır
$ S2 - ilkel bir dize? dize örneği - hayır? evet
Bir string
aslında bir string
olduğunda dışında bir string
olması için PHP mümkündür. Örtülü türü dönüştürme kullanan herhangi bir dilde olduğu gibi, bağlam her şeydir.