Gerçekten PHP?

0 Cevap php
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.

0 Cevap