(aslen soruya leepowers tarafından gönderildi )
Hata mesajı büyük bir nedenden dolayı kafa karıştırıcı:
İlkel tür adları PHP'de ayrılmaz
Aşağıdakilerin tümü geçerli sınıf bildirimleridir:
class string { }
class int { }
class float { }
class double { }
Benim hatam, hata mesajının sadece dize ilkel türüne atıfta bulunduğunu düşünmektir - 'örnek' kelimesi bana duraklama sağlamalıydı. Daha fazla 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 dize? yes - string örneği? Hayır
$ s2 - ilkel dize? no - string örneği? Evet
PHP'de a'nın gerçekte a string
olması string
dışında bir olması mümkündür string
. Örtük tür dönüşümü kullanan herhangi bir dilde olduğu gibi, bağlam her şeydir.