PHP
self:: ile sınıf içi erişim
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
-
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.
-
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++;
}
}
-
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
Sıradaki ders: static:: ile geç bağlama