Sayılamalara giriş

(PHP 8 >= 8.1.0)

Sayılamalar (veya tür adı olarak "enum") tanımlamalarda, olası değer kümelerinden biriyle sınırlanabilen özel bir veri türünü kullanabilmeyi sağlar. Bu, "geçersiz durumların devre dışı bırakılmasını" sağladığından, bir etki alanı modeli tanımlarken özellikle yararlı olabilir.

Sayılamalar çoğu yazılım dilinde çok çeşitli farklı özelliklerle yer almaktadır. PHP'de ise, enum özel bir nesne çeşididir. Kendisi bir sınıf olup içeriği kılıflar (case) bu sınıfın tekil olarak örneklenmiş nesneleridir. Yani, bir sayılama kılıfı (enum case) geçerli bir nesne olup, tür sınamaları dahil, bir nesnenin kullanılabildiği her yerde kullanılabilir.

Sayılamaların en bilinen örneği, true ve false değerlerini (ikil) sayılı tür olarak içeren yerleşik mantıksal türdür. Sayılamalar geliştiricinin kendi keyfi sayılamalarını tanımlayabilmesini sağlar.

add a note add a note

User Contributed Notes 1 note

up
2
Hayley Watson
1 year ago
It's important to notice that the description here doesn't describe Enum values as being constants. Some languages, like C, C++, and C#, think of an enum as a list of named integers, and working with enums in those languages is just working with integers. PHP does not do that.

In the same way that PHP's booleans are their own type and not just constants with integer values 1 and 0, an Enum is its own type. It's not a bunch of integers (or strings) that have been given names, and shouldn't be thought of or used as such.

An Enum only needs to be backed by some primitive value like an integer or string if you need to communicate it outside the program (a message, UI, db storage, wire protocol, etc) where it has to be converted from/to its native PHP value (this is addressed again on the Backed Enumerations page). If you're converting back and forth between Enums and their backing values inside your own program to get anything done then you might be missing the point of Enums.

You might want more structure to your Enum than just a pure set of distinct but otherwise nondescript values (you might at least want them to be ordered). But all that carry-on should be encapsulated within the Enum class itself via additional methods.
To Top