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

  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007
  • The Bad Tutorials

    The Bad Tuto

    6 EKİM 2009