Yıkıcı (__destruct)
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 8 / 91.
__destruct yöntemi, bir nesne yok edildiğinde otomatik olarak çağrılan özel bir yöntemdir. Bir nesne, ona yönelik başka referans kalmadığında veya betik sona erdiğinde yok edilir.
Hem bir kurucu hem de bir yıkıcı içeren bir sınıf örneği aşağıda verilmiştir:
<?php
class Resource {
public $name;
public function __construct($name) {
$this->name = $name;
echo $this->name . " was created\n";
}
public function __destruct() {
echo $this->name . " was destroyed\n";
}
}Bir nesne oluşturun ve yaşam döngüsünü izleyin:
echo "=== Start ===\n";
$r = new Resource("Connection");
echo "Using " . $r->name . "\n";
unset($r); // nesneyi açıkça yok et
echo "=== End ===\n";Çıktı:
=== Start ===
Connection was created
Using Connection
Connection was destroyed
=== End ===unset() işlevi, nesneye yapılan başvuruyu kaldırarak yıkıcıyı hemen tetikler.
unset() çağırmazsan, betik tamamlandığında yıkıcı otomatik olarak çalışır:
$r = new Resource("Logger");
echo "Working...\n";
// __destruct betiğin sonunda otomatik olarak çağrılırÇıktı:
Logger was created
Working...
Logger was destroyedÖnemli Nokta: __destruct yöntemi, bir nesneye artık ihtiyaç duyulmadığında dosyaları kapatma, kaynakları serbest bırakma veya günlük tutma gibi temizleme görevleri için yararlıdır.
Görev
Ortaresource.php dosyasındaki Resource sınıfını tamamlayın:
$nameparametresini alan, bunu bir özellik (property) olarak atayan ve"[name] was created"yazdıran bir__constructmetodu ekleyin.$messageparametresini alan ve"Log: [message]"yazdıran birlogMessagemetodu ekleyin."[name] was destroyed"yazdıran bir__destructmetodu ekleyin.
driver.php dosyası, Resource nesnelerinizin yaşam döngüsünü test edecektir.
Kendin dene
<?php
require_once 'resource.php';
$testCase = trim(fgets(STDIN));
if ($testCase == "basic_test") {
echo "=== Start ===\n";
$r = new Resource("FileHandler");
echo "Using " . $r->name . "\n";
unset($r);
echo "=== End ===\n";
} elseif ($testCase == "auto_destruct_test") {
$r = new Resource("Logger");
$r->logMessage("Application started");
}
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