CodeBlanks Logo Icon CodeBlanks

self:: ile sınıf içi erişim

PHP kursu · Orta seviye · Ders 32/115

self:: ile sınıfın static üyelerine içeriden erişmeyi öğrenirsin.

self:: ile sınıf içi erişim

Sınıf içinde static bir üyeye erişirken sınıf adını yazmak yerine self:: kullanabilirsin. self, kodun yazıldığı sınıfı temsil eder. Örnek: self::$count veya self::increment().

Bu, sınıf adını sabit olarak yazmaktan daha güvenlidir. Sınıfın adını değiştirsen bile self:: referansı bozulmaz. Ayrıca kodun niyetini de belli eder: bu sınıfın static üyesi.

Önemli fark: self::$count yazımında $ işareti vardır (property erişimi). Ama self::method() yazımında $ yoktur (method erişimi).

self:: ve $this farkı

self:: ve $this farklı şeylere işaret eder. $this mevcut örneği (object) temsil eder; self:: yazıldığı sınıfı temsil eder.

Bir instance method içinden ikisine de erişebilirsin: $this->name örnek property'si, self::$count static property. Bir static method içinden ise yalnızca self:: çalışır; $this yoktur.

Örnek: bir Counter sınıfında increment() static methodu self::$count++ yapar; getCount() static methodu return self::$count döndürür. Sınıf adını tekrar tekrar yazmaya gerek kalmaz.

Uygulama Counter: self:: ile static property ve method

Bir Counter sınıfı tanımla. public static int $count = 0 property olsun. İki static method ekle: increment(): void içinde self::$count++ yapsın; getCount(): int return self::$count döndürsün. Üç kez Counter::increment() çağır, sonra echo Counter::getCount() . "\n" yaz.

Örnek çözümü göster
:$count++ yap, getCount içinde return self::$count döndür, üç kez Counter::increment() çağır, echo Counter::getCount() . "\n" yaz.
Örnek çözüm:
<?php
// Counter sınıfını self:: ile yaz
class Counter {
    public static int $count = 0;
    public static function increment(): void {
        self::$count++;
    }
    public static function getCount(): int {
        return self::$count;
    }
}
Counter::increment();
Counter::increment();
Counter::increment();
echo Counter::getCount() . "\n";

Kendini test et

  1. self:: ne işe yarar?

    • Örnek değişkenlerine erişmek için
    • Sınıfın static üyelerine içeriden erişmek için
    • Alt sınıfın üyelerine erişmek için
    • Yapıcı metodu çağırmak için
    Cevabı göster

    Sınıfın static üyelerine içeriden erişmek için — Doğru. self:: ile sınıfın kendi static üyelerine içeriden erişirsin.

  2. self:: ile static property erişimi

    class Counter {
        public static int $count = 0;
        public static function increment(): void {
            ____
        }
    }
    Cevabı göster
    class Counter {
        public static int $count = 0;
        public static function increment(): void {
            self::$count++;
        }
    }
  3. self:: ve $this ifadelerini eşleştir

    self::$count
    Static property erişimi
    self::method()
    Static method çağrısı
    $this->name
    Instance property erişimi
    self
    Sınıfın kendisine referans

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