Yücel Alkan

PHP'de Object (Nesne) Oluşturma (OOP)

Merhaba. Bu yazımda Object Oriented Programming yani Nesne Yönelimli Programlamanın parçalarından olan nesne kavramını ve kullanımından bahsedeceğim.

Gerçek hayattaki nesnelerin programlama dili içerisinde class yapısı ile tanımlandığını, değişkenler kullanılarak özelliklerinin, fonksiyon kullanılarak da eylemlerinin tanımlandığını belirtmiştim. İşte bu class yapısı kullanılarak üretilen her bir yapı, her bir örnek nesne adını almaktadır. 

Öncelikle bir class tanımı yapalım. 

class Futbolcu 
{
    public $adSoyad;
    public $takim;
    public $gol;
    public $asist;

    public function golAt()
    {
        $this->gol++;
    }

    public function asistYap()
    {
        $this->asist++;
    }

    public function transferOl($yeniTakim)
    {
        $this->takim = $yeniTakim;
    }
    
}

Yukarıdaki kodlara göre Futbolcu adında bir class tanımı yaptık. Bu classın adSoyad, takim, gol ve asist isimlerinde dört tane değişkeni bulunmaktadır. Yine futbolcunun gol sayısını arttıran, asist sayısını arttıran, transfer olmasını sağlayan yani takımını değiştiren üç tane de fonksiyon tanımı yaptık. 

Şimdi bu classı kullanarak yeni bir object yani nesne tanımı yapalım. 

$messi = new Futbolcu();

Yeni bir nesne tanımlamak için öncelikle bir isim belirleriz. Ben bu örnekte $messi ismini kullandım. Değişken tanımlama kurallarında geçerli olan kurallar, nesne ismi için de geçerlidir. 

Yeni bir nesne tanımı için new anahtar kelimesi kullanılır. Ardından da hangi class yapısından nesne üretmek istiyorsak o class'ın adını yazmamız gerekiyor. 

Yukarıdaki ifadeye göre $messi adında bir object yani nesne tanımladım ancak herhangi bir özelliğini atamadım. Şimdi bu nesnenin değişkenlerine değer atayalım. 

$messi->adSoyad = "Lionel Messi";
$messi->takim = "Barcelona";
$messi->gol = 45;
$messi->asist = 40;

Bir nesnenin değişkenlerine değer atamak için -> ifadesi kullanılır. Ardından değişken adı yazılır ancak başına $ işareti konulmaz. Sonrasında tıpkı değişkene değer atama işleminde olduğu gibi eşittir işaretinin karşısına değer yazılır. 

Herhangi bir nesneye ait değişkenleri echo komutuyla ekrana yazdırabiliriz. 

echo $messi->gol;
echo $messi->takim;

Yukarıdaki kodlara göre önce $messi nesnesinin gol değeri yani 45, ardında da takımı yani Barcelona değeri ekrana yazılacaktır. 

Şimdi de aynı nesneye ait fonksiyonlara erişim sağlayalım. 

$messi->golAt();
$messi->asistYap();

Fonksiyonlara erişim, değişkenlere erişim ile aynıdır. Ancak fonksiyon isimlerinin sonuna ( ) işaretleri konulmak zorundandır. Aksi takdirde bu ifadeyi bir değişken olarak algılayacak ve değişkenlerde araycaktır. Tabi bu da size hata olarak geri döencektir. 

Yukarıdaki örnekte golAt() ve asistYap() fonksiyonlarını çağırdıktan sonra futbolcunun gol sayısı ve asist sayısı bir artacaktır. Çünkü class içerisinde tanımladığımız fonksiyonlarda bu işlemi yerine getiren kodları yazmıştık. Class yapımızı inceleyebilirsiniz. 

Tanımlamış olduğumuz Futbolcu class'ından $messi adında bir nesne üretmiş oldum. Aklınıza şöyle bir soru gelebilir: Biz aynı sayfada sadece bir tane mi nesne üretebiliyoruz? Hayır, dilediğiniz kadar üretebilirsiniz. 

Mesela yine Futbolcu class'ını kullanarak bu sefer $ronaldo adında bir nesne üretelim. 

$ronaldo = new Futbolcu();

$ronaldo->adSoyad = "Christiano Ronaldo";
$ronaldo->takim = "Juventus";
$ronaldo->gol = 43;
$ronaldo->asist = 35;

Şimdi de $ronaldo nesnesine ait fonksiyonlara erişim sağlayalım. Mesela $ronalde nesnesine ait transferOl() fonksiyonunu çağıralım. 

$ronaldo->transferOl("Inter");

Futbolcu class'ı içerisinde tanımladığımız transferOl() fonksiyonu, parametre olarak gelen takım adını, futbolcunun takımı olarak ayarlamaktadır. Yani futbolcunun takımı değişmekte, futbolcu transfer olmaktadır. 

Bu fonksiyonu çalıştırdıktan sonra $ronaldo nesnesine ait takım değerini ekrana yazdıralım. 

echo $ronaldo->takim;

Bu ifadenin ekran çıktısı Inter olacaktır. Çünkü biz transferOl() fonksiyonunu çağırarak $ronaldo nesnesinin takım değerini Inter olarak değiştirmiştik. 

Konuyla ilgili videoya aşağıdan ulaşabilirsiniz. 
 


PHP'de tanımlanan bir class yapısından nesne üretme işlemi bu şekilde. Soru ve görüşlerinizi yorum olarak bırakabilirsiniz. Hayırlı çalışmalar dilerim.

Yorumlar
ahmet yüce (25 Kasım 2021 - 15:48)
çok teşekkür ediyorum size. gayet açık anlaşılır şekilde anlatmışsınız. kitabınız var ise almayı dahi düşünüyorum.
Cevapla
Yorum Yapın