Get Adobe Flash player

PHP Sınıf (Class) – 1

Sınıf (Class):  Fonksiyon ve değişkenlerin bir arada olduğu pakettir.

aslında class bu kadar kolay ve kısa

Fonksiyonun ne olduğunu biliyorsunuz, değişkeni zaten kullanıyorsunuz. peki aynı anda 3-4 fonksiyonu kullanan sayfanız yok mu ? var

Gerektiğinde bu fonksiyonları kopyalıyor yada include ile çağırıyorsunuz değil mi !

işte class bu işlemi daha düzenli hale getiriyor ve dışardan müdahaleyi önlüyor. son olarak yaptığınız class paketini bir dosyaya koyup gerektiğinde include ile çağırıyorsunuz.

Yani öyle fazla abartılacak bir olay değilmiş. madem öyle hadi bir class yapalım.

diyelim ki şöyle bir fonksiyona sahibiz, bu fonksiyon dosya silme işlemi yapıyor:

function silici($dosya)
{
unlink($dosya);
}


böyle kısa fonksiyon olmaz ama örnek kodları fazla uzatmayalım.

Bu fonksiyonda önemli bir sorun var, dosya adı herhangi birşey olabilir. örneğimizi web sitesinde kullandığımızı düşünelim.

$dosya=$_GET["ismi"];
silici($dosya);

bu sayfayı çağırmak için kullanıcı adres satırına şöyle bir link ile tıklıyor:

kontrol.php?ismi=resim1.jpg

tamam işte, ne güzel sayfa. resimleri silmeye yarıyor. sorun yok !

yok mu ?

peki kullanıcı bunu yazarsa ne olur.

kontrol.php?ismi=index.php

Bu durumda fonksiyonumuz hangi dosyayı siler ?

evet tahmin ettiğiniz gibi kullanıcı sitedeki herşeyi silebilir. tabii ki bu basit bir örnek. biz kısa bir düzeltme ile bunu önleyebiliriz. şimdi durumu düzeltmek için bir fonksiyon daha ekleyelim.

$uzantilar = array("jpg", "gif", "png", "jpeg");

function resim_mi($dosya)
{
global $uzantilar;

if (in_array(end(explode('.',$dosya)), $uzantilar ))
{
return true;
}else{
return false;
}
}

function silici($dosya)
{
if(resim_mi($dosya))
{
unlink($dosya);
}
}

Şimdi elimizde iki fonksiyon var. bunları bir dosyaya koyup gerektiğinde include ederek tek bir satırla kullanmamız mümkün.

silici($dosyaismi);

Hazır başlamışken aynı dosyaya upload için gerekli birkaç fonksiyon daha koyalım ve öylece kullanalım. gayet güzel gidiyor değil mi !

Aslında class ile tam olarak bunu yapıyoruz. gerekli değişkenleri ve fonksiyonları paketliyoruz ve tek dosyada kullanıyoruz. Böylece fonksiyon.php isimli ve içinde onlarca fonksiyon olan uzun bir dosya yerine gerektiğinde kullanılacak daha küçük dosyalarımız oluyor. Bu dosyalar bir amaca uygun paketlendiği için birbirine karıştırmıyoruz. düzenli olması için dosya ismi ile class ismi aynı oluyor.

Yukarıdaki fonksiyonları kullanarak üretilecek class paketi:

———- dosyaci.php ismiyle kaydedilecek———

class dosyaci
{

<strong>var $uzantilar =</strong> <a href="http://www.phpkodlari.com/php/array">array</a>("jpg", "gif", "png", "jpeg");

function resim_mi($dosya)
{
if (in_array(end(explode('.',$dosya)), <strong>$</strong><strong>this-&gt;uzantilar</strong>))
{
return true;
}else{
return false;
}
}

function silici($dosya)
{
if(<strong>$this-&gt;</strong>resim_mi($dosya))
{
unlink($dosya);
}
}
}


hepsi bu… geçmiş olsun.

Şimdi kırmızı ile gösterdiğim ve yeni öğreneceğiniz bölümlere bakalım.

class dosyaci
{

}

class bu şekilde oluşturuluyor. ve isimden sonra normal parantez işareti gelmiyor. isim olarak fonksiyondaki kurallar geçerli. Türkçe karakter olamaz.

var $uzantilar

Paket içinde kullanılacak değişken. müdahale etmek gerektiğinde sayfa içinde aramakla uğraşmak yerine class.php dosyasının başına bakmamız yeterli.

$this->resim_mi($dosya)

Class paketi içersinden bir fonksiyon çağırırken bu şekilde $this diyoruz. Türkçesi bu class içindeki bir fonksiyon veya değişken.

yaptığımız dosyayı kullanmak için sayfanın başında include etmemiz gerekiyor.
örnek kullanımı:

include("dosyaci.php");

$a = new dosyaci;
$a-&gt;silici($_GET["ismi"])

önceki işlemlerimize göre bir satır fazla yazmış olabiliriz ama toplamda bize çok vakit kazandırıyor ve tekrar kullanması kolaylaşıyor. sihirli fonksiyonlarla birlikte aslında daha az yazdığımızı farkediyoruz.

(Kaynak : http://www.phpkodlari.com)

Leave a Reply