__destruct()
fonksiyonu için "görünürlük" kamu veya başka bir şey olabilir mi? Benim grup için bir standartlar doc yazmaya çalışıyorum ve bu soru geldi.
Mark Biek cevabı ek olarak:
__ Imha () fonksiyonu, kamu ilan edilmelidir. Aksi halde, fonksiyon komut dosyası kapatma idam olmayacak:
Warning: Call to protected MyChild1::__destruct() from context '' during shutdown ignored in Unknown on line 0
Warning: Call to private MyChild2::__destruct() from context '' during shutdown ignored in Unknown on line 0
Bu zararlı, ama oldukça kirli olmayabilir.
Ama bu konuda en önemli şey: yıkıcı özel ilan veya korumalı ise, çalışma zamanı çöp toplayıcı nesnelerin serbest çalışır anda ölümcül bir hata atar:
<?php
class MyParent
{
private function __destruct()
{
echo 'Parent::__destruct';
}
}
class MyChild extends MyParent
{
private function __destruct()
{
echo 'Child::__destruct';
parent::__destruct();
}
}
$myChild = new MyChild();
$myChild = null;
$myChild = new MyChild();
?>
çıkışlar
Fatal error: Call to private MyChild::__destruct() from context '' in D:\www\scratchbook\destruct.php on line 20
(Mükemmel örneğin Mark Biek için teşekkürler!)
Ben bir alt açıkça üst sınıf __destruct yöntemi çağırmak gerekiyor durumunda ortak olması gerekir düşünüyorum.
Böyle bir şey bir hata atmak:
<?php
class MyParent
{
private function __destruct()
{
echo 'Parent::__destruct';
}
}
class MyChild extends MyParent
{
function __destruct()
{
echo 'Child::__destruct';
parent::__destruct();
}
}
$myChild = new MyChild();
?>