14 Ocak 2025

Php Static Kullanımı

static anahtar kelimesi, PHP'de sınıfa bağlı özellikler (properties) ve metotlar (methods) tanımlamak için kullanılır. Bu özellik ve metotlara bir nesne oluşturmadan doğrudan sınıf üzerinden erişilebilir.

Normalde bir sınıftaki özellik veya metoda erişmek için bir nesne oluşturman gerekir. Ancak static kullanıldığında, o özellik veya metot sınıfa bağlı hale gelir ve nesne oluşturmadan kullanılabilir.


Static Özellik ve Metotlar

  • Static Özellikler: Sınıfa özgüdür ve tüm nesneler için ortak bir değer taşır.
  • Static Metotlar: Bir nesne yerine sınıf üzerinden çalıştırılır. Static metotlar içinde $this kullanılamaz, çünkü $this bir nesneyi temsil eder.

Static Kullanımına Örnek

<?php class Matematik { // Static bir özellik (tüm sınıflar için ortak) public static $pi = 3.14159; // Static bir metot public static function alanHesapla($yaricap) { return self::$pi * $yaricap * $yaricap; } } // Nesne oluşturmadan static özelliğe erişim echo Matematik::$pi; // Çıktı: 3.14159 // Nesne oluşturmadan static metoda erişim echo Matematik::alanHesapla(5); // Çıktı: 78.53975 ?>

Önemli Notlar:

  1. Static özelliklere ve metotlara self:: veya ClassName:: kullanarak erişilir.
  2. Static özellik ve metotlar nesneye değil, doğrudan sınıfa bağlıdır.
  3. self:: → Sınıf içinden static özelliğe/metoda erişim için kullanılır.
  4. ClassName:: → Sınıf dışından static özelliğe/metoda erişim için kullanılır.

Static Özelliklerin Durumunu Değiştirme

Static özellikler, sınıfa özgü olduğu için her nesnede aynı değeri taşır. Örneğin:

<?php class Sayaç { public static $sayi = 0; public static function arttir() { self::$sayi++; } } // Static özelliği güncelleme ve okuma Sayaç::arttir(); Sayaç::arttir(); echo Sayaç::$sayi; // Çıktı: 2 ?>

Static ile Diğer Özelliklerin Farkı

Eğer static kullanmazsan, her nesne için özellikler farklı olur. Static ise ortak bir özellik/metot sağlar.


Static ve Late Static Binding

Eğer bir sınıftan türeyen sınıflarda static metodun sınıfa özgü davranmasını istersen, static:: kullanmalısın. Örneğin:

<?php class A { public static function kimimBen() { return static::class; // Late Static Binding } } class B extends A { } echo A::kimimBen(); // Çıktı: A echo B::kimimBen(); // Çıktı: B ?>

Hiç yorum yok:

Yorum Gönder