CodeBlanks Logo Icon CodeBlanks

static property

PHP kursu · Orta seviye · Ders 30/115

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

  1. 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.

  2. static property tanımla

    class Counter {
        public ____
    }
    echo Counter::$count;
    
    Cevabı göster
    class Counter {
        public static int $count = 0;
    }
    echo Counter::$count;
    
  3. 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

Orta seviye bölümündeki tüm dersler