SORU
5 Kasım 2010, Cuma


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
5 Kasım 2010, Cuma


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;
    }
    ...
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • mliskIT

    mliskIT

    29 Mart 2012
  • theKGB65

    theKGB65

    24 Aralık 2007