Nesne yönelimli (Object-oriented) programlama icad
edildiğinde, geleneksel programlamaya aşina olanlar önce tereddüt ettiler; sonra
bunun ne harika bir teknik olduğnunu gördüler ve nesnelerden vazgeçmez oldular.
Kabaca tanımlarsak, nesne, kendi değişkenleri ve icra edeceği komutlardan oluşan
fonksiyonları ile bir bütündür. Nesneyi bir kere tanımladıktan sonra
istediğimiz kadar örneğini oluşturabiliriz. Bir nesnenin yapacağı işten, o
nesnenin metodu diye söz ederiz. Bu açıdan bakarsanız, programlarımızda nesneler
sadece metodları için işe yararlar.
Diyelim ki programımızda bir "öğrenci" nesnesi
oluşturmak istiyoruz. Bu nesnenin içinde adı, soyadı ve notlar gibi değişkenler,
ve bu değişkenlerle yapılan bir takım işler bulunsun. İşe nesnenin tabir yerinde
ise şablonu olan class'ı oluşturmakla başlayalım; gerisini de yaptıkça görelim.
Bir nesne oluşturalım
Bir nesne oluşturmak için önce onu tanımlamamız
gerekir. Bunu PHP'nin class deyimini kullanarak yapabiliriz. Bir nesnenin
özellikleri (properties) ve metodları (methods) vardır. Şu kodu nesneler01.php
adıyla kaydedin:
<HTML>
<HEAD>
<TITLE>PHP'de Degiskenler</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<B>
<H2>
<?php
class ogrenci
{
// özellikleri tanımlayalım
var $adi;
var $soyadi;
var $sinav1;
var $sinav2;
var $not;
// metodları tanımlayalım
function adi_belirle ($n)
{
$this->adi = $n;
}
function soyadi_belirle ($n)
{
$this->soyadi = $n;
}
function sinav1_belirle ($n)
{
$this->sinav1 = $n;
}
function sinav2_belirle ($n)
{
$this->sinav2 = $n;
}
function not_hesapla()
{
$this->not = ($this->sinav1 + $this->sinav2)/2;
print ($this->adi. " " . $this->soyadi . " için not ortalaması: ". $this->not);
}
}
//Buraya başka kodlar girecek
$ogr1 = new ogrenci();
$ogr1 -> adi_belirle("Şahika");
$ogr1 -> soyadi_belirle("Tabak");
$ogr1 -> sinav1_belirle(7);
$ogr1 -> sinav2_belirle(10);
$ogr1 -> not_hesapla();
?>
</H2>
</B>
</BODY>
</HTML>
Bu programda ogrenci adlı bir nesne tanımlıyoruz;
ve daha sonra bir değişken adına new komutu ile bu nesnenin bir örneğini
oluşturuyoruz. Nesnelerin yeni bir örneği veya kopyasını çıkartmak ifadeleri
aslında yaptığımızı tam anlatmıyor. Nesnenin tanımı bir adet; her new komutu ile
bu nesnenin özelliklerine ve metodlarına sahip yeni bir nesne yapmış oluyoruz.
Nitekim bu işe insanın dilini dolayan İngilizce bir kelimeyle Instantiation
(yeni bir varlığını oluşturma) deniyor. Bu örnekte, $ogr1 adlı değişken
gerçekte, ogrenci nesnesinin tam bir örneği: içinde beş değişken ve altı metod
var. Nesneyi bir kere tanımladıktan sonra programın daha ileri aşamalarında bu
istediğimiz kadar örneğini farklı isimler vererek oluşturabiliriz. Şimdi şu
satıra dikkat edelim:
$ogr1 = new ogrenci();
$ogr1 -> adi_belirle("Şahika");
Burada $ogr1'in parametrelerine nasıl değer
yazdırdığımızı görüyorsunuz. Nesnenin metodlarından biri olan adi_belirle
fonksiyonuna bir değer veriyoruz: "Şahika"; nesne oluşturulurken yazılmış olan
bu fonksiyon ise aldığı değeri, kendi ait olduğu nesnenin bir değişkenine
kaydediyor:
function adi_belirle ($n)
{
$this->adi = $n;
}
Bu ve diğer fonksiyonlarda kullandığımız "$this->"
ifadesi, kendisine ulaştırılan değeri bir parametre olarak kullanıyor ve "$adi"
değişkenine yazıyor. "this" (bu) kelimesi o anda nesnenin o anda oluşturulmakta
olan örneğine göndermede bulunur. "->" işlemcisini kullanarak, istediğimiz
nesnenin istediğimiz metoduna veya parametresine değer gönderebiliriz. Bir
nesnenin yeni bir örneğini oluşturduğumuz zaman, bu örneğin bütün
parametrelerini sağlamak veya bütün metodlarını kullanmak zorunda değiliz.
PHP ile Web programcılığı yolunda hızlı adımlarla
yol alıyoruz. Bu bölümde gördüğümüz dizi değişkenler ve nesneler, Web
sayfalarımızda bir çok işi adeta otomatik hale getirecek unsurlar olarak
kullanılacak.