MyBB Destek Forumu

Orjinalini görmek için tıklayınız: Php Final Özelliği
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Php İle Class Özellikleri

Final özelliği atanmış bir metot veya sınıf son metot veya son sınıf olduğunu işaret eder yani kendisinden sonra herhangi bir başka metot veya sınıf gelemez anlamını taşımaktadır.

Örnek ;

Kod:
view source
print?
01    < ?php
02    class a
03    {
04        private $isim = 'yusuf';
05        public final function isimGetir()
06        {
07            echo $this->isim;
08        }
09    }
10    
11    class b extends a
12    {
13        private $baska_isim = 'veli';
14    
15        public function isimGetir()
16        {
17            echo $this->baska_isim;
18        }
19    }
20    
21    $b = new b;
22    $b->isimGetir();
23    ?>

Bu örnekte a classının en son metodunun isimGetir() olduğu tanımlanmıştır ve bu metotdan sonra herhangi bir metot gelemeyecektir. Yani a sınıfından türeyen bir class da hiç bir şekilde isimGetir() metodu bulunamaz çünkü isimGetir() a sınıfının final metodur ve override (yok sayılarak yeniden aynı metot yazılamaz. (tamam tercümem biraz düşük oldu ) edilemez.

Bu örnek bize metot içindi birde sınıflar bir birleri arasında türetilirken artık son sınıf olduğunu belirtmemiz gerekebilir. Bunun için de class sözcüğünün başına final anahtarı getirilir.

Kod:
view source
print?
01    < ?php
02    class a
03    {
04        public function aGetir()
05        {
06            echo 'Ben A sınıfıyım. ';
07        }
08    }
09    
10    class b extends a
11    {
12        public function bGetir()
13        {
14            echo 'Ben B sınıfıyım. ';
15        }
16    }
17    
18    final class c extends b
19    {
20        public function cGetir()
21        {
22            echo 'Ben C sınıfıyım ve benden sonra başka bir sınıf bana extends edilemez. ';
23        }
24    }
25    
26    $c = new c;
27    $c->aGetir();
28    $c->bGetir();
29    $c->cGetir();
30    
31    class d extends c
32    {
33        public function dGetir()
34        {
35            echo 'Ben D sınıfıyım.';
36        }
37    }
38    
39    $d = new d;
40    ?>

Bu örnek çalıştırıldığında c classı final anahtar sözcüğü atandığı için kendisinden hiç bir şekilde sınıf türetilemeyecek ve ekrana “Class d my not inherit from final class ©..” gibi şeklinde hata mesajı döndürecektir.