Php class öğrenenler için ilk adım

Kategori : Php Dersleri

şaşkın

Php`ye yeni başlayanlar bu yazıyı okumasın, en az bir yıllık php kullanıcısı iseniz mutlaka okuyun.

PHP 5 - Herşeyin değiştiği gün smiley

Php 5 versiyon ile Nesne yönelimli programlama ön plana çıktı (7 Temmuz 2004). php'yi eleştirenler bu tarihte artık söz söyleyemez hale geldi, geliştirilmiş class yapısı ve sihirli fonksiyonlar ile işler daha da kolaylaştı. Siz de halen projelerinizde Class kullanmıyorsanız yazdığınız kodlar php 4 mantığına göre çalışmaktadır, kullandığınız sunucuda php 6 kullanılıyor olsa da sizin algoritmalarınız daima php 4 kıvamında kalacaktır. bu sözüm özellikle fonksiyonlarla hayatına devam edeceğini düşünenlere geliyor. Artık daha hızlı kod yazma vaktiniz gelmedi mi, kopyala yapıştır işleminden bıkmadınız mı ?

Elbette fonksiyonlar ile her türlü işlemi yapmanız mümkündür, fakat proje büyüdükçe fonksiyonların içinde boğulduğunuzu göreceksiniz, ve hangi sayfada hangi kodların olduğunu karıştıracaksınız. kopyala yapıştır canınızı sıkmaya başlayacak.

Bu olay çok sık başınıza geliyorsa artık biraz zahmet edip yeni şeyler öğrenerek Class dünyasına girmeniz gerekiyor. öğrendikçe neler kaçırdığınıza pişman olacaksınız.

if(! Tamam ikna oldum Peki Nedir Bu Class ) exit;

Tamam class dünyasına girelim ama daha kapıdan bakarken bile birsürü ingilizce terim canımızı sıkıyor, oda yetmezmiş gibi Türkçeye çevrilmiş yazıları bile anlayamıyorum, ne olacak bizim halimiz !

Öncelikle bu ders serisinde herşeyin kolay olacağını söyliyeyim ve içiniz rahatlasın. yabancı kaynaklarda olmadığı kadar kolay ve türkçe kaynaklarda bulamadığınız kadar basit anlatacağım. yazdığım kodlara hiçbir zaman betik, yordam falan demeyeceğim smiley 

 

Class: Fonksiyon ve değişkenlerin bir arada olduğu pakettir.

aslında class bu kadar kolay ve kısa smiley

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 ? smiley

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
{

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

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

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


hepsi bu... geçmiş olsun. smiley

Ş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->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.

Devamını isteyenler aşağıya not bıraksın lütfen.  smiley

Anlaşıldı mı ?

Devamını yazayım mı ?

 

Derslerin devamını getireceğim. Fakat şu sıralar flash ile oyun yazmaya başladık. bakarsınız yeni bir sitede "nasıl oyun yazılır" isimli bir konudan devam ederiz.

Beni izlemeye devam edin smiley

www.necmi.me

veya google amcanıza gidip ekrana "necmi" yazın. orada beni tanırlar. hangi motora sorsanız gösterirler.

 

drekon 2010-10-16 22:05:57

DMCA.com
Bookmark and Share
Hit:53681
Puan ver:

Cevap

nssasmaz Nursin Şaşmaz Avatar

Devamını yazayım mı?

Devamını yazmayın diyecek varsa bu sitede işi ne.. :D

Devamını istiyoruz..
Bu kadar açık ve anlaşılır anlatılsa okullarda, herkes PHP Profesörü olmazsa bende Nursin değilim...

Gitme vakti gelince gitmek mi zordur kalmak mı?
17-10-2010 02:31

    Teşekkürler

    byaang kemal

    makaleniz gayet iyi öğretiyor devamını bekliyoruz... Teşekkürler

    17-10-2010 11:21 Edit:17-10-2010 11:22

      class

      Devamını isteyen elbette vardır Nursin. asıl sorun kaç kişinin istediği. sadece sana öğreteceksem bir ara uğrarsın anlatırım smiley

      class olmadan site yapabilirsiniz. ama class olmadan gerçek bir uzman olamazsınız.smiley

      Her programcı birgün Php yi tadacaktır
      17-10-2010 12:03

        Çok sağolun

        barış barış Avatar

        Gerçekten anlatımınız çok güzel.Çok soğolun.

        19-10-2010 23:28

          zazayavuz zaza

          ANALTIM ÇOK İYİ BEN HİÇ BİŞE BİLMEDİĞİM HALDE ENAZINDAN Bİ ÖN BİLGİ OLDU BANA

          TŞKLR

          27-10-2010 00:59

            İstemeyen ölsün :)

            alicilin Ali Fırat Güler

            Hocam devamını istyoruz. Bu arada sizin gibi ders anlatan bi hoca görmedim çok çok teşekkür ediyorum hocam...  Devamını anlatmazsanız intihar ederim hocamsmiley

            06-11-2010 13:17

              necdetakbas Necdet AKBAŞ Avatar

              Biliyor olmak başka şey, bildiklerinizi anlatma kabiliyeti başka şey. Anlatımınız çok sede ve anlaşılır. teşekkürler, tabiiki devamını bekliyoruz

              Hiçbirimiz hepimiz kadar akıllı değiliz.
              09-11-2010 03:21

                Devamını Şiddetler bekliyoruz üstad....

                kadir Kadir Avatar

                Tebrik ederim harika bir anlatım olmus devamını bekliyorum üstad....

                Class yapısını uzaun zamandır kullanmak istiyorum ancak sizinki gibi bir kaynak bulmak oldukça zor, ayrıca sürekli farklı kaynakları takip etmekten kafan allak bullak oldu:p maalesef :( bu yüzden bu yazının devamını bekleyeceğim....

                Teşekkürler başarılarınız devamını dilerim...

                18-11-2010 20:01

                  first class

                  toraman muhammet toraman Avatar

                  devamını bekliyoruz hocam.

                  <??>
                  22-11-2010 12:06

                    www.Phpkodlari.com © 2009 Herkes Php öğrenecek
                    Web tasarım ve eğitim kaynağınız.