PHP ile Sınıf oluşturma, Get ve Set Metodları Kullanımı

PHP tamamen sunucu taraflı bir web programlama dilidir. Nesne Yönelimli Programlamanın yazılımcılar tarafından yoğun kullanılması nedeniyle PHP5'te nesne yönelimli programlama(OOP) geçmiştir. Günümüzde artık nesne yönelimli olmayan programlama dilleri kullanılmamakta ve ortadan kalkmaktadır. Fortran, Pascal gibi dilleri bazı üniversiteler programlamaya giriş derslerinde kullanılsalar da bu dillerin günümüz dünyasında profesyonel hayatta bir geçerliliği yoktur. 

Nesne Yönelimli Programlama özellikle
tekrar kullanılabilirlik(reusability) kavramı ile ön plana çıkmaktadır. Yazılan sınıfların daha sonra farklı projelerde tekrar kullanılabilmesi hem zaman hem de maliyet açısından faydalar sağlamaktadır. Başladığınız her projede aynı kodları defalarca yazıyorsanız ve sizin yazdığınız kodları yazılım ekibi içerisindeki diğer yazılımcılar geliştirip kullanamıyorsa, hem zaman hem maliyet açısından verimsiz bir durum söz konusudur. 
 
Nesne Yönelimli programlamanın diğer bir avantajı sürdürülebilirlik(maintainability) özelliğidir. Kaynak kodların kolayca  okunabilmesi, anlaşılabilmesi gibi avantajları yanında kolayca hata bulma, optimize etme işlemleri de pratik bir şekilde yapılabilir.  
 
Genişleyebilirlik(Extensibility) de  nesne yönelimli programlamanın diğer bir avantajıdır. Kodlarınıza kolayca yeni özellikler ekleyip genişletmenize olanak tanır. 

PHP'ye dönecek olursak, PHP dilinde sınıf oluşturma işlemi tıpkı C++ ve Java'da olduğu gibi class ifadesi kullanılır, ardından sınıf adı yazılır. Örneğin aşağıdaki gibi bir tanım ile bitkiler sınıfını oluşturduk.   

class  bitkiler{

}

 
Sınıflarda özellik (attribute) ve metodlar(methods) yer alır. Sınıftan oluşan nesnelerin hangi eylemleri yapabileceğini metodlarla ifade ederiz. Yapısal programlamada metod yerine fonksiyon ifadesi kullanılır. Özellikler ise sınıfımızdan türetilecek nesneleri tanımlayan ifadelerdir. Örneğin araba sınıfı oluşturmuş olalım. Tüm arabalarda vites ve renk özelliği bulunmaktadır. Araba sınıfından türetilen her nesne bu özelliklere sahip olacaktır. 

Encapsulation(sarmalama) özelliğinden dolayı sınıf içindeki özelliklere direkt olarak erişilmemesi gerekir. Bu nedenle private ifadesi sınıf içindeki her özelliğin önüne yazılmıştır. public yazsaydık direkt olarak erişebilirdik, fakat nesne yönelimli programlamanın mantığına ters bir yaklaşımdır. Çünkü sınıf içindeki özelliklerin dışarıdan erişilemeyecek şekilde korunması gerekir.

Peki direkt olarak sınıf içindeki özelliklere erişemiyorsak bu sınıftan türetilen nesnelere nasıl değer atayacağız? Değer atamak için Set metodunu, özelliğin değerini almak için ise get metodunu kullanacağız. 

PHP'de genelde her sayfada bir sınıf olacak şekilde ayarlarız.  Aşağıda kullanılan $this sözcüğü ile o sınıfın içinde bulunan özelliklere erişim yapılmaktadır. $this->vites ile sınıfın üst kısmında tanımladığımız vites özelliğine erişmekteyiz. 

<?php
class araba{
    private $vites;
    private $renk;
    
    public function getVites(){
        return $this->vites;
    }
    
    public function setVites($vites) {
        $this->vites = $vites;
    }
    
    public function getRenk(){
        return $this->renk;
    }
    public function setRenk($renk){
        $this->renk =$renk;
    }
}
 
$a = new araba();
$a->setVites(5);
 
echo "Arabanın vites Sayısı:".$a->getVites();
echo "\n";
 
$a->setRenk("beyaz");
echo "Arabanın rengi:".$a->getRenk();

?>

 
Sınıfın bitiminde sonra aşağıdaki satır ile Araba sınıfından $a isimli bir nesne oluşturmaktayız. $a nesnesi, Araba sınıfının tüm metod ve özelliklerini kullanabilir. Bir sınıftan istediğimiz kadar nesne türetebiliriz.

$a= new Araba();

 
Aşağıda da otomobil ve kamyon isimli nesneleri Araba sınıfından oluşuyor, bu nesnelerin hepsi aynı aileden oluşuyor. Fakat aralarında tabi ki farklar olacak. İleride sınıflarımızı geliştirerek var olan sınıflardan yeni sınıflar oluşturacağız. 

$kamyon = new Araba();
$otomobil = new Araba();


Yukarıdaki kodları mutlaka yazarak test ediniz, farklı sınıflar tasarlayarak onlardan nesneler türetiniz. 


Sınıfları oluşturmayı ve nesne türetmeyi öğrendikten sonra, Kalıtım(inheritance), Arayüzler(Interface), Soyutlama(Abstraction) ve Sihirli Metodlar (Magic Methods) üzerinde duracağız. Namespace kavramına da yer geldiğinde detaylı olarak değineceğiz. Bu konulara ilgi duyan arkadaşları gelecek yazılarımıza bekleriz.

PHP ile MySQL Veritabanına PDO Tekniği ile Class Oluşturarak Bağlanma-3
Aşağıdaki yazılar ilginizi çekebilir.


PHP ile MySQL Veritabanına PDO Tekniği ile Class Oluşturarak Bağlanma-1
PHP ile MySQL Veritabanına PDO Tekniği ile Class Oluşturarak Bağlanma-2
PHP ile MySQL Veritabanına PDO Tekniği ile Class Oluşturarak Bağlanma-3
PHP ile MySQL Veritabanına PDO Tekniği ile Class Oluşturarak Bağlanma-4
PHP ile MySQL Veritabanına PDO Tekniği ile Class Oluşturarak Bağlanma-5
PHP ile MySQL Veritabanına PDO Tekniği ile Class Oluşturarak Bağlanma-6

Tüm PHP Dersleri için tıklayınız.
 
Mutlu kodlamalar,
Oğuzhan TAŞ
Ocak 2019
 
Bookmark and Share