Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
PHP class (sınıf) yapısı
#1
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.
Kod:
class uyeler {
public $veriler;
function ekle($ad, $soyad) {
$this->veriler[] = array('ad' => $ad, 'soyad' => $soyad);
}

function duzenle($no, $ad, $soyad) {
if(!isset($this->veriler[$no])) return false; // eğer yoksa olumsuz
$this->veriler[$no] = array('ad' => $ad, 'soyad' => $soyad);
return true;
}

function sil($no) {
unset($this->veriler[$no]);
}

function listele() {
foreach($this->veriler as $no => $uye) {
echo $no . ' - ' . $uye['ad'] . ' ' . $uye['soyad'] . '<br/>';
}
}
}


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.


Kod:
$liste = new uyeler();
$liste->ekle('Musa', 'Avcı'); // 0 nolu üye eklendi
$liste->ekle('Bill', 'Gates'); // 1 nolu üye eklendi
$liste->duzenle(0, 'Mehmet', 'Yılmaz'); // 0 nolu üye düzenlendi
$liste->sil(1);
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.

Kod:
$ogrenci = new uyeler();
$sanatci = new uyeler();
// ...
$ogrenci->ekle('Musa', 'Avcı');
$sanatci->ekle('Barış', 'Manço');



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.

Kod:
class deneme {
function deneme() {
echo 'Sınıf yapıcısı çalıştı!';
}
}

$deneme = new deneme();


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.

Kod:
class kedi {
function kedi($isim) {
$this->isim = $isim;
}

function miyav() {
echo $this->isim . ': Miyav!';
}
}

$kedi = new kedi('Çomar');
$kedi->miyav();
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.

Kod:
class deneme {
function __destruct() {
echo 'Sınıf yok ediliyor.';
}

function deneme() {
echo 'Selam Dünya!';
}
}

$deneme = new deneme();



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.

Kod:
class uye {
public $ad;
public $soyad;

function isim($ad, $soyad) {
$this->ad = $ad;
$this->soyad = $soyad;
}

function isim_yaz() {
echo $this->ad . ' ' . $this->soyad;
}
}


class ogrenci extends uye { // uye sınıfını miras aldık
public $sinif;

function sinif($sinif) {
$this->sinif = $sinif;
}

function sinif_yaz() {
echo 'Sınıf: ' . $this->sinif;
}
}

class ogretmen extends uye { // uye sınıfını miras aldık
public $ders;

function ders($ders) {
$this->sinif = $ders;
}

function ders_yaz() {
echo 'Ders: ' . $this->ders;
}
}

$ogrenci = new ogrenci();
$ogrenci->isim('İnek', 'Şaban'); // bu metod uye sınıfından miras.
$ogrenci->sinif('Hababam'); // bu ise ogrenci sınıfına ait metod.

$ogretmen = new ogretmen();
$ogretmen->isim('Mahmut', 'Hoca'); // bu metod uye sınıfından miras.
$ogretmen->ders('Hayat Bilgisi'); // bu ise ogretmen sınıfına ait metod.
!!Yeah!!, proud to be a member of Support.10TL.NET(Genel Destek Platformu) since Jun 2015.
Ara
Cevapla


Hızlı Menü:


Şu anda bu konuyu okuyanlar: 1 Ziyaretçi

Online Shopping App
Online Shopping - E-Commerce Platform
Online Shopping - E-Commerce Platform
Feinunze Schmuck Jewelery Online Shopping