PHP Sabitleri (Constants): Kapsamlı Rehber
PHP’de sabit (constant), tanımlandıktan sonra değeri değiştirilemeyen isimlendirilmiş bir değerdir. Konfigürasyonlar, sihirli sayılar (magic numbers) ve proje genelinde değişmeyecek metin/sayısal değerler için idealdir.
1) Sabit Nasıl Tanımlanır?
const ile
-
Derleme (parse) zamanında değerlendirilir.
-
Sadece üst seviye (global kapsam) veya sınıf içinde kullanılabilir.
define() ile
-
Koşul blokları içinde dahi çağrılabilir.
-
PHP 7.0+ ile skaler; PHP 7.0/7.1+ sürümlerinde dizi sabitler de tanımlanabilir.
Not:
define('AD', 'deger', true)ile büyük/küçük harf duyarsız sabit tanımı PHP 8.0 itibarıyla kaldırıldı. Sabit isimleri büyük harf konvansiyonuyla yazın.
2) Sabitlere Erişim, Kontrol ve Dinamik Kullanım
Sabitler global kapsamda görünür; fonksiyon içinde de aynı isimle erişebilirsiniz.
3) Sınıf Sabitleri
Sınıf içinde const kullanılır ve :: ile çağrılır. PHP 7.1+ ile erişim belirleyici (public/protected/private) verilebilir; PHP 8.1+ ile final sınıf sabitleri desteklenir.
4) Sihirli Sabitler (Magic Constants)
Derlendiği yere göre değer alan, PHP’nin sağladığı yerleşik sabitler:
| Sabit | Örnek Değer / Açıklama |
|---|---|
__FILE__ | /var/www/index.php |
__DIR__ | /var/www |
__LINE__ | Bulunduğu satır numarası |
__FUNCTION__ | Fonksiyon adı |
__CLASS__ | Sınıf adı |
__METHOD__ | Sınıf + metod adı |
__TRAIT__ | Trait adı |
__NAMESPACE__ | Namespace adı |
ClassName::class | Tam nitelikli sınıf adı stringi |
5) İsim Alanları (Namespaces) ve İçe Aktarma
6) const mı, define() mı? — Karşılaştırma
| Özellik | const | define() |
|---|---|---|
| Kullanım yeri | Global veya sınıf içinde | Çoğu yerde, koşul içinde de |
| Değerlendirme zamanı | Derleme zamanı | Çalışma zamanı |
| Dizi sabit | PHP 5.6+ | PHP 7.0/7.1+ |
| Görünürlük (sınıfta) | public/protected/private (7.1+) | — |
| Final sınıf sabiti | 8.1+ | — |
Öneri: Sınıflarda const, global konfigürasyonlarda ise çoğunlukla const tercih edin; koşula bağlı tanım gerekiyorsa define() kullanın.
7) Yerleşik Yararlı Sabitler
8) En İyi Uygulamalar (Best Practices)
-
Adlandırma:
BÜYÜK_HARF_VE_ALTTIREkullanın (örn.CACHE_SURESI). -
Tek Sorumluluk: Sadece değişmeyecek değerleri sabit yapın.
-
Merkezileştirme: Proje genel sabitlerini
config/constants.phpgibi tek noktada toplayın. -
Sınıf Sabitleri: Domain’e özgü sabit değerleri ilgili sınıflara koyun (örn.
Siparis::DURUM_TASLAK). -
Sihirli Sayılardan Kaçının: Anlamı açık sabit adları tercih edin (
86400yerineBIR_GUN_SANIYE).
9) Kısa Örnek: Konfigürasyon ve Kullanım
Sonuç
Sabitler, projenizin okunabilirliğini, bakımını ve güvenilirliğini artırır. Doğru yerde const/define() kullanıp sabitleri anlamlı isimlerle merkezi hâle getirirseniz, kod tabanınız çok daha sürdürülebilir olur.


