Statik Metotlar ve Özellikler
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 17 / 91.
Özellikler statik olabildiği gibi, metotlar da tek tek nesneler yerine doğrudan sınıfa ait olabilir. Statik metotlar, önce bir örnek oluşturmaya gerek kalmadan doğrudan sınıf üzerinden çağrılır.
static anahtar sözcüğünü kullanarak statik bir yöntem bildirir ve bunu sınıf adı ile :: işleciyle çağırırsınız:
<?php
class MathHelper {
public static function add($a, $b) {
return $a + $b;
}
public static function multiply($a, $b) {
return $a * $b;
}
}
echo MathHelper::add(5, 3) . "\n";
echo MathHelper::multiply(4, 2);
Çıktı:
8
8Statik metotlar, statik özelliklerle iyi çalışır. Yaygın bir desen, paylaşılan sınıf verilerini yönetmek için statik bir metot kullanmaktır:
<?php
class Counter {
private static $count = 0;
public static function increment() {
self::$count++;
}
public static function getCount() {
return self::$count;
}
}
Counter::increment();
Counter::increment();
echo Counter::getCount();
Çıktı:
2Statik metotların $this kullanamayacağını unutma, çünkü bir nesne örneği yoktur. Yalnızca statik özelliklere ve diğer statik metotlara self:: kullanarak erişebilirler.
Temel Nokta: Statik metotlar, nesne durumuna ihtiyaç duymayan yardımcı işlevler veya sınıf düzeyindeki verileri yönetmek için kullanışlıdır. Nesne örneği oluşturmayı gerektirmeden işlevsellik sağlarlar.
Görev
KolayBenzelendirmeniz gerekmeksizin benzersiz tanımlayıcılar oluşturmak için statik yöntemleri ve özellikleri kullanan bir ID oluşturucu sistemi oluşturalım.
Kodunuzu düzenlemek için iki dosya oluşturacaksınız:
IdGenerator.php: Yalnızca statik üyeleri kullanarak benzersiz ID oluşturmayı yöneten birIdGeneratorsınıfı tanımlayın. Sınıf,0değerinden başlayan özel bir statik$lastIdözelliğine ve"ID"olarak ayarlanmış özel bir statik$prefixözelliğine sahip olmalıdır. Son ID'yi artıran ve ön eki yeni ID ile birleştiren biçimlendirilmiş bir dize (örneğin"ID1","ID2"vb.) döndüren bir statikgenerate()yöntemi oluşturun. Ön eki değiştiren bir statiksetPrefix($newPrefix)yöntemi ve$lastIdözelliğinin geçerli değerini döndüren bir statikgetLastId()yöntemi ekleyin.main.php: IdGenerator sınıfı dosyasını dahil edin. Varsayılan ön eki kullanarak iki ID oluşturun ve her birini kendi satırına yazdırın. Ardından statik yöntemi kullanarak ön eki"USER"olarak değiştirin, iki ID daha oluşturun ve her birini yazdırın. Son olarak, uygun statik yöntemi çağırarak son ID numarasını yazdırın.
Statik yöntemlerin, ClassName::methodName() kullanılarak doğrudan sınıf üzerinde çağrıldığını ve sınıf içinde statik özelliklere self::$propertyName ile erişildiğini unutmayın. Nesne örneği olmadığından, statik yöntemlerde $this kullanamazsınız.
Çıktınız, farklı ön eklerle ID'lerin ilerleyişini göstermeli ve statik özelliklerin birden çok yöntem çağrısı boyunca değerlerini nasıl koruduğunu ortaya koymalıdır.
Kendin dene
<?php
// IdGenerator sınıf dosyasını dahil et
require_once 'IdGenerator.php';
// TODO: Varsayılan önek kullanarak iki ID oluştur ve her birini kendi satırına yazdır
// TODO: Statik metodu kullanarak öneki "USER" olarak değiştir
// TODO: İki ID daha oluştur ve her birini kendi satırına yazdır
// TODO: Uygun statik metodu kullanarak son ID numarasını yazdır
?>Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesneler$this Anahtar SözcüğüMetotlarÖzelliklerYapıcı (__construct)Yıkıcı (__destruct)Tekrar - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımparent:: Anahtar SözcüğüMetot Geçersiz Kılmafinal Anahtar SözcüğüSoyut SınıflarTekrar - Çalışan Hiyerarşisi7Kapsülleme
Public, Protected, PrivateErişim Belirleyicileri DerinlemesineGetter ve Setter'larBilgi GizlemeYapıcı Özellik Terfisi (8.0)Tekrar - Öğrenci Kayıt Sistemi10İleri Düzey OOP Kavramları
Composition ve KalıtımBağımlılık EnjeksiyonuAnonim SınıflarEnum'lar (PHP 8.1)Fiber'lar (PHP 8.1)Nesne Klonlamaya Derinlemesine BakışÜreteçler ve Yineleyiciler13Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik KalıpDepo Kalıbı2Namespace’ler ve Autoloading
Namespace’lere Girişuse Anahtar SözcüğüPSR-4 Autoloading StandardıComposer AutoloaderTekrar - Düzenli Proje5Arayüzler ve Sözleşmeler
Arayüzlere GirişArayüzleri UygulamaBirden Çok Arayüz UygulamaArayüz ve Soyut Sınıf KarşılaştırmasıArayüzlerle Tür İpuçlarıTekrar - Şekil Hesaplayıcı8Sihirli Metotlar
Sihirli Metotlara Giriş__toString ve __debugInfo__get, __set, __isset, __unset__call ve __callStatic__clone ve Nesne Klonlama__serialize ve __unserializeTekrar - Özel Koleksiyon3Sınıf Özellikleri
Örnek ve Statik ÖzelliklerSınıflarda SabitlerStatik Metotlar ve ÖzelliklerPrivate ve Protected ÖzelliklerSalt Okunur Özellikler (PHP 8.1)Tekrar - Banka Hesabı Yöneticisi6Çok Biçimlilik
Metot Geçersiz Kılmayı Yeniden Ele AlmaArayüzler Yoluyla Çok BiçimlilikTür İpuçları ve Birleşim TürleriGeç Bağlanan Statik ÇağrılarÖzet - Ödeme İşlemcisi9Trait'ler
Trait'lere GirişBirden Çok Trait KullanımıTrait Çakışmalarını ÇözümlemeTrait'lerde Soyut MetotlarTrait'ler ve Kalıtım Karşılaştırması12Tasarım Desenleri 1. Bölüm
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy DeseniKendi başına pratik yap: Online PHP derleyicisi