Sınıflara bir çok fonksiyonu bir düzene göre bir arada barındıran yapılardır. Belli bir konu ya da olayın fonksiyonlarını içerir ve belli bir amacı olduğu için sınıf kurulma ihtiyacı duyulur. Mesela bir toplama işlemi için sınıf tanımlamamıza gerek yok, ama bir üyelik ya da alışveriş sepeti için sınıf hazırlayabilirsin.

Üyelik örneğinden gidelim, üyelik sınıfında üye ekleme, silme, düzenleme ve listeleme fonksiyonları olur. Sadece bir üyelik sınıfı ile tüm bu üyelik fonksiyonlarına ulaşabilirsin. Sadece bir arada ulaşmanın da dışında aynı zamanda fonksiyonların arasında sınıf içinde veri transferi de sağlayabilirsin.

Verdiğim üyelik örneği üzerine bir üyelik sınıfı hazırlayayım.

Eğer bu sınıf yapısını ilk görüşün ise öncelikle $this değişkenini tanıştırmakla başlayabilirim. Fonksiyonların içinde çağırdığımız $this, o sınıf içersinde tanımlanmış bir global değişken gibidir. Nasıl bir fonksiyonların içinde kullanılan değişkenler sadece kendi içlerinde varlarsa, tüm sınıfın içerisinde varolması istenen değişkenlerde bu $this değişkeni üzerinde barındırılır.

Buradaki örnektede yukardaki “uyeler” sınıfını kullandım, tüm bir sınıfı $liste adında bir değişkene yükledim ve tüm bu içeriği sadece o değişken üzerinden kontrol edebilirim. Ayrıca bir diğer espiriside aynı sınıftan birden fazla oluşturabiliyor olmamız.

Aynı sınıfı iki bağımsız değişken üzerinde tanımlayarak her birinde ayrı işlem yapabilir ve sonra istediğimizin verilerine ulaşabiliriz.
Sınıfların yapıcı ve yıkıcı metodları

Bir sınıf oluştururken eğer o sınıfın içine aynı isimde bir metod tanımlarsak bu aynı zamanda o sınıfın yapıcı metodu olur. Yapıcı metod sınıf ilk oluşturulmak istendiğinde otomatik çağrılır, yani “new class()” denildiğinde. Metodun aynı adını kullanmak yerine “__construct” şeklinde de yazabilirsiniz.

Ekranda “Sınıf yapıcısı çalıştı!” yazar. Ayrıca bu metoda ekleyeceğimiz parametreler sınıf ilk çağrıldığında kullanılabilir.

Ekranda “Çomar: Miyav!” yazar.

Yıkıcı metodu “__destruct” sınıfın yok edileceği sıra çalışır, bu genellikle tüm ifadelerden sonra gerçekleşir. Kullanımına örnek vermek gerekirse bir veritabanı sınıfında yıkıcı metoda veritabanı ile bağlantısını kesme komutunu verebilirsiniz, fakat bu işlemi normal bağlantılarda PHP otomatik olarak yapmaktadır.

Ekranda “Selam Dünya! Sınıf yok ediliyor.” yazar.
Sınıfların miras alınması

Bir çok dilde de extends ifadesiyle gerçekleşen miras olayı ise adı üzerinde bir sınıfa miras alınan sınıfın metodlarını ve değerlerini dahil eder.

Ben bunun rahat anlaşılması için yine bir üye sınıfı ve bu sınıfı miras alan öğrenci ve öğretmen sınıfları yapacağım.

“üye” sınıfında olan isim metodu, hem “öğrenci” hem de “öğretmen” sınıflarında kullanılacak bir metod olduğu için o sınıflarda da benzer metodlar tanımlamak yerine “üye” sınıfını miras alarak o sınıfın bünyesine dahil etmiş olduk.
Sınıf değerlerinin görünürlüğü

Sınıfları ifade ederken ilk satırlarına yazdığımız değerler yukarıda da bahsettiğim gibi tüm sınıf içerisinde $this değişkeni ile ulaşılabilen değerlerdir. Bu değerlere public, private ve protected adında 3 farklı görünürlük tanımlayabiliyoruz.

Bu kullanımda herhangi bir hatayla karşılaşmazken “private” ya da “protected” dediğimizde dışarıdan ulaşılmaya çalışıldığında hata verir. Bunların kullanımına örnek olarak eğer dışarıdan değiştirilmesini ya da okunmasını istemediğiniz ve sadece sınıf içerisinde işlemler yapmak için tutacağınız şifre gibi değerlerde tutabilirsiniz.

“private” ve “protected” farkı ise private dediğimizde bu sınıfı miras alan (extends eden) alt sınıflara bu değerin ulaşmaması sağlanıyor. “protected” de ise sadece dışarıdan ulaşılması engelleniyor, alt sınıflardan ulaşılabilir.
Metod zincirleme

Bu pratik yöntem sayesinde art arda metodlar çağırabilirsiniz. Tek yapmanız gereken zincirleme metod yapmak istediğiniz metodda sonuç olarak “return $this;” demek. Bu sayede metod çağırıldıktan sonra sonuç olarak kendisini yani sınıfı döndürecek ve biz tekrar metod çağırmaya devam edeceğiz.

Yorum Yap

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">