static property
static property ile sınıfa ait paylaşılan durum tutmayı öğrenirsin.
static property
Bir static property, örneğe değil sınıfın kendisine aittir. static anahtar kelimesi ile tanımlanır: public static int $count = 0. Önemli özellik: aynı sınıfın tüm örnekleri bu property'yi paylaşır. Yani bir örnek değeri değiştirdiğinde, diğerleri de yeni değeri görür.
Erişim de farklıdır: örnekten $obj->prop değil, sınıf adıyla Counter::$count yazılır. :: işaretine scope resolution operator denir. Bu yüzden static property, örnek sayısı veya sayaç gibi paylaşılan durum için uygundur.
static property tanımı ve erişimi
Bir Counter sınıfı tanımlayalım. İçinde public static int $total = 0 yazarsan, bu değer sınıfa aittir. Dışarıdan Counter::$total ile okur ya da yazarsın; new ile örnek oluşturmana gerek yok.
Bir yapıcı (constructor) içinde Counter::$total++ yazarsan, her new Counter() çağrısında paylaşılan sayaç artar. Böylece toplam örnek sayısını tutabilirsin.
Dikkat: static property'ye örnek üzerinden $obj->total erişimi PHP 8.3'te önerilmez; her zaman Counter::$total kullan.
Uygulama Counter sınıfı: static property ile örnek sayacı
Bir Counter sınıfı tanımla. İçinde public static int $total = 0 property olsun. Yapıcı metot (__construct) her çağrıda Counter::$total++ ile sayacı artırsın. Üç kez new Counter() çağır ve sonunda echo Counter::$total . "\n" ile sayacı yazdır.
Örnek çözümü göster
:$total++ yap, üç kez new Counter() çağır, echo Counter::$total . "\n" yaz.
Örnek çözüm:
<?php
// Counter sınıfını tanımla
class Counter {
public static int $total = 0;
public function __construct() {
Counter::$total++;
}
}
new Counter();
new Counter();
new Counter();
echo Counter::$total . "\n";
Kendini test et
-
static property ne zaman kullanışlıdır?
- Her örnek kendi değerini tutacaksa
- Değer tüm örnekler arasında paylaşılacaksa
- Değer yalnızca yapıcı içinde kullanılacaksa
- Property bir dize (string) olduğunda
Cevabı göster
Değer tüm örnekler arasında paylaşılacaksa — Doğru. static property, tüm örneklerin paylaştığı durum içindir.
-
static property tanımla
class Counter { public ____ } echo Counter::$count;Cevabı göster
class Counter { public static int $count = 0; } echo Counter::$count; -
static property ifadelerini eşleştir
- public static $count
- Sınıfa ait property
- Counter::$count
- Dışarıdan erişim
- static anahtar kelimesi
- Paylaşılan durum işareti
- $obj->count
- Önerilmez erişim