PHP
Sınıf sabitleri vs static
Sınıf sabitleri ile static property arasındaki farkı öğrenirsin.
Sınıf sabitleri vs static property
Sınıf sabitleri (const) ile static property'ler sınıf düzeyinde veri tutar ama aralarında temel farklar vardır.
Bir sınıf sabiti değiştirilemez (immutable): tanımlandıktan sonra yeni değer atanamaz. Bir static property ise çalışma zamanında değiştirilebilir: Counter::$count = 5; geçerlidir.
Sabitler basit türlere (sayı, dize, dizi, bool, null) sabit ifadeyle başlatılır. Static property'ler herhangi bir ifadeyle başlatılabilir ama hesaplama constructor'da yapılır.
Hangi durumda const, hangi durumda static?
Hangisini seçmelisin? Sabit, değer hiç değişmeyecekse: pi sayısı, HTTP durum kodu, ayar anahtarı. Static property, değer çalışma zamanında değişebilecekse: sayaç, önbellek (cache), oturum sayısı.
Örnek: class Config { const int MAX_USERS = 100; public static int $currentUsers = 0; }. MAX_USERS sabitidir (değişmez), $currentUsers static property'dir (artırılır/azaltılır).
Pratik ölçüt: değer program boyunca aynı kalıyorsa const; değişiyorsa static.
Uygulama Counter sınıfında const ve static farkı
Bir Counter sınıfı tanımla. const int MAX = 3; sabiti ve public static int $count = 0; property'si olsun. public static function increment(): void metodu self::$count++ yapsın. Sonra Counter::increment()'i üç kez çağır ve echo Counter::$count . "/" . Counter::MAX . "\n"; yazdır. (Beklenen çıktı: 3/3)
Örnek çözümü göster
void { self::$count++; } } sonra üç kez Counter::increment(); çağır, sonra echo Counter::$count . "/" . Counter::MAX . "\n";
Örnek çözüm:
<?php
// Counter sınıfını tanımla
class Counter {
const int MAX = 3;
public static int $count = 0;
public static function increment(): void {
self::$count++;
}
}
Counter::increment();
Counter::increment();
Counter::increment();
echo Counter::$count . "/" . Counter::MAX . "
";
Kendini test et
-
Hangisi bir sınıf sabitinin (const) özelliğidir?
- Değiştirilemez (immutable)
- Çalışma zamanında değiştirilebilir
- Her örnek için farklı değer tutar
- $ işaretiyle yazılır
Cevabı göster
Değiştirilemez (immutable) — Doğru. const ile tanımlanan sabit değiştirilemez.
-
Sabit mi static mi?
class Config {
____
}
Cevabı göster
class Config {
const int MAX_USERS = 100;
}
-
Bir web uygulamasında 'giriş yapan kullanıcı sayısı' için ne kullanırsın?
- const ile sınıf sabiti
- private property
- ::class
- static property
Cevabı göster
static property — Doğru. Giriş yapan kullanıcı sayısı çalışma zamanında değişir, static property uygundur.
Sıradaki ders: Sabit kullanım örnekleri