Sayılamalar sınıflara benzer ve sınıflar, arayüzler ve niteliklerle aynı isim alanını paylaşır. Ayrıca, aynı yolla otomatik yüklenebilir. Her sayılama, sınırlı ve sabit sayıda olası değer içeren yeni bir tür tanımlar.
<?php
enum Deste
{
    case Kupalar;
    case Karolar;
    case Sinekler;
    case Maçalar;
}
?>
    Bu bildirim Deste adında yalnız ve yalnız dört meşru
    değer içeren yeni bir sayılama türü oluşturur:
    Deste::Kupalar, Deste::Karolar,
    Deste::Sinekler ve Deste::Maçalar.
    Değişkenlere bu dört değerden biri atanabilir. Yalnızca sayılama
    türünde değerlerin aktarılabileceği bir işlevin türü sadece o
    sayılama türüne karşı tür denetimine tabi tutulabilir.
   
<?php
function kart_seç(Deste $deste)
{
    /* ... */
}
$val = Deste::Karolar;
// OK
kart_seç($val);
// OK
kart_seç(Deste::Sinekler);
// Tür hatası: kart_seç(): Bağımsız değişken #1 ($deste) Deste türünde olmalıyken string türünde
kart_seç('Sinekler');
?>
    Bir sayılama sıfır veya daha fazla sayıda case
    tanımı içerebilir ve azami bir sınır yoktur. case
    içermeyen sayılamalar sözdizimsel olarak geçerli olsa da
    yararsızdır.
   
Sayılama kılıflarında PHP'nın yaftalara uyguladığı sözdizimi kuralları uygulanır, daha fazla bilgi Sabitler bölümünde bulunabilir.
    Öntanımlı olarak, bir case özünde bir sayıl değerle
    desteklenmez. Yani, Deste::Kupalar sayıl olarak
    "0" değerine eşit değildir. Bunun yerine, her
    case taşıdığı isimde tekil bir nesneyle desteklenir.
    Şöyle ki:
   
<?php
$a = Deste::Sinekler;
$b = Deste::Sinekler;
$a === $b; // true
$a instanceof Deste;  // true
?>
    Bu ayrıca, sayılama değerlerin birbirlerinden büyük veya küçük
    olamayacağı anlamına da gelir (zaten nesneler arasında böyle bir
    karşılaştıma anlamsızdır). Sayılama değerleri ile çalışırken bu
    karşılaştırmalar daima false döndürür.
   
    Bir değer içermeyen case türüne "Desteksiz Kılıf"
    denir. Sadece desteksiz kılıflar içeren sayılamalara "Desteksiz
    Sayılama" denir.
   
    Tüm desteksiz kılıflar içerildikleri sayılamayı gerçekleyen
    örneklerdir. enum türü dahili olarak bir sınıfla
    ifade edilir.
   
    Tüm kılıflar birer salt-okunur özellik olup name harf
    büyüklüğüne duyarsız olarak kılıfın kendi ismidir.
   
<?php
print Deste::Sinekler->name;
// çıktısı: "Sinekler"
?>
    name dinamik olarak elde edilmişse, bir enum durumunun
    varlığına bakmak veya okumak için defined() ve
    constant() işlevlerini kullanmak da mümkündür. Bununla
    birlikte, Destekli
    sayılamaların kullanımı çoğu kullanım durumunda çalışması
    gerektiğinden bu önerilmez.
   
