Gerçekten PHP? "Tartışma 1 my_function geçti() dize bir örnek, verilen" dize olması gerekir;
function phpwtf(string $s) {
echo "$s\n";
}
phpwtf("Type hinting is da bomb");
Catchable fatal error: Argüman 1 phpwtf geçti() bir dize olması gereken bir örnek, dizgide
PHP tanımak görmek ve aynı nefes istenilen tip reddetmek için biraz Orwell'in daha fazlası var.Beş ışıklar, lanet olsun.
Yazın eşdeğer PHP dizeleri için ipuçları nedir?
Burada tam olarak ne olup bittiğini açıklayan bir cevap için Bonus dikkate.
Özet
Hata iletisini en büyük sebeplerinden biri için kafa karıştırıcı
İlkel türü adları PHP saklıdır
Aşağıdaki geçerli bir sınıf bildirimleri var
class string { }
class int { }
class float { }
class double { }
Hatamı hata iletisi dize ilkel türü için sadece referans olduğunu düşünerek - kelime 'örnek' bana vermeliydi duraklama. Bir örnek daha göstermek için:
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')]);
Çıkış:
$s1 - ilkel dize? Evet örnek dize? hayır
$s2 - ilkel dize? hayır - string örneği? Evet
PHP string aslında string dışında string mümkün. Örtük tür dönüştürmesi, bağlam kullanan herhangi bir dil ile olduğu gibi her şey.
CEVAP
PHP type hinting sadece nesneleri ve diziler türleri zorlamak için kullanılabilir. Skaler tip-hintable değildir. Bu durumda sınıfın bir nesnesi string bekleniyor, ama (skaler) string Bir veriyorsun. Hata iletisini komik olabilir, ama başlamak için çalışmak zorunda değil. Dinamik yazarak sistemi göz önüne alındığında, bu gerçekten sapkın duygusu bir tür yapar.
Sadece sen yapabilirsinel ile< . em ^/"yazın ipucu" skaler türleri:
function foo($string) {
if (!is_string($string)) {
trigger_error('No, you fool!');
return;
}
...
}

Nasıl grep tüm dosyaları bir dize olma...
Nasıl doğru ActionScript 3 SOAP web se...
Bir dize kontrol etmek için nasıl &quo...
Neden[[]]yok[ []] [ []] dize " dön...
C# ta string kullanmalıyım.Boş ya da D...