• 01-01-2010, 22:52:15
    #1
    Yeni yazımda sizlere geçenlerde keşfettiğim pratik bir işlemden bahsedeceğim.
    Bahsettiğim işlem kimilerinize pratik, kimilerinize kullanışsız gelebilir. Karar sizin

    İşleyiş şöyle oluyor;
    Örneğin üyelik sistemi yapıyoruz. Basit anlamda ekleme silme ve düzenleme işlemlerine ihtiyacımız var. Bunun için öncelikle bir kullanıcı sınıfı oluşturuyoruz;

    <?php
    
    class Kullanici
    {
        public $ID;
        public $KullaniciAdi;
        public $Sifre;
        public $EPosta;
        public $Adi;
        public $Soyadi;
        public $Sehir;
        public $Adres;
        public $PostaKodu;
        public $Telefon;
        public $WebSitesi;
    }
    ?>
    basit anlamda kullanıcı özelliklerini tanımlıyoruz öncelikle. Daha sonra kullanıcı işlemlerini yapacak olan ekleme, silme, düzenleme fonksiyonlarını yazacağız.İşte bahsettiğim olayın pratikliği burada devreye giriyor. Normalde örneğin düzenleme işlemini yapan fonksiyon içinde düzenleme sorgusu için sorguyu metin olarak yazar, içine de eklenecek değişkenleri yazarız. Misal;
    mysql_query("UPDATE kullanici SET adi = '$this->Adi' WHERE id = '$this->ID' ");
    şeklinde yazarız. 2 satır şey yazmaktan üşendiğim zaman keşfettiğim işlem sayesinde fonksiyon sınıf içinden property leri okuyarak sorguya dahil ediyor. Bu durumda yeni bir property eklediğimizde veya var olan property lerden birini sildiğimiz zamanlarda hem sınıf içinde değişiklik yapar, hemde sorguda değişiklik yaparız. Bu yöntem sayesinde sınıf propertysinde değişiklik yaptığımız zaman otomatik olarak sorguya yansıyor.
    Bu işlemi yapabilmek için öncelikle işlemleri yaptığımız sınıfın propertylerini okumaya ihtiyacımız var. Bunun için;

    print_r($this);
    dediğimiz zaman $this ile varolan sınıfı object olarak alıyoruz. Bu object türündeki değişkenimizi işlemlerimiz için array türüne cast ediyoruz.

    (array)$this;
    Bir dizide var olan key isimlerine ulaşmak için ise array_keys() fonksiyonunu kullanıyoruz.;
    $sinif = array_keys((array)$this);
    echo $sinif[0]; // Kullanıcı sınıfının 0. propertysi olan "ID" yi bize geri döner.
    Yukarıdaki kod parçacığında ise sınıf property isimlerine erişmiş oluyoruz.
    Basit bir döngü ile dizimizin içinde bir tur atarak işlem yapacağımız sorgumuzu rahatlıkla oluşturabiliyoruz.
    Sonuç olarak ise ortaya kendi kendine sorgusunu yaratan basit bir fonksiyon ortaya çıkıyor;

      public function Degistir()
        {
            if((int)$this->ID != 0)
            {
                $sorguMetin = 'UPDATE kullanicilar SET ';
                $sinif = array_keys((array)$this);
                for($i = 1;$i<count($sinif);$i++)
                {
    				$alanAdi = strtolower($sinif[$i]);
    				$alanDegeri = $this->{$sinif[$i]};
                    $sorguMetin .= " $alanAdi = '$alanDegeri' ";    
                    if($i<count($sinif)-1)
                    {
                        $sorguMetin .= ', ';
                    } 
    			}
                $sorguMetin .= " WHERE id = '$this->ID'";
                
                mysql_query($sorguMetin);
            }
    	}

      public function Degistir()
        {
            if((int)$this->ID != 0)
            {
                $sorguMetin = 'UPDATE kullanicilar SET ';
                $sinif = array_keys((array)$this);
                for($i = 1;$i<count($sinif);$i++)
                {
                    $sinifKucuk = strtolower($sinif[$i]);
                    $sinifBuyuk = $this->{$sinif[$i]};
                    if($sinifKucuk == 'sifre')
                    {
                        if($sinifBuyuk != '')
                        {
                            $sinifBuyuk = md5(sha1($sinifBuyuk));
                            $this->Sifre = $sinifBuyuk;
                            $sorguMetin .= " $sinifKucuk = '$sinifBuyuk'";
                            if($i<count($sinif)-1)
                            {
                                $sorguMetin .= ', ';
                            } 
                    
                        }
                        
                    }
                    else
                    {
                        $sorguMetin .= " $sinifKucuk = '$sinifBuyuk'";    
                        if($i<count($sinif)-1)
                        {
                            $sorguMetin .= ', ';
                        } 
                    }
                    
                       
                }
                $sorguMetin .= " WHERE id = '$this->ID'";
                
                mysql_query($sorguMetin);
            }

    Orjinal Yazı

    Yorumlarınızı bekliyorum...
    Hatam varsa affola.
  • 01-01-2010, 23:57:25
    #2
    Gerçekten güzel tbr ederim. Ufkum açıldı
  • 02-01-2010, 00:05:08
    #3
    aLKaDraZ adlı üyeden alıntı: mesajı görüntüle
    Gerçekten güzel tbr ederim. Ufkum açıldı
    birazcık tembelliğe iten bir yöntem ama hoş şuanda üzerinde çalıştığım bir uygulama sayesinde basit anlamlı ekleme silme işlemlerini yapan php kodlarını oluşturan bir sisteme sahip olacağım
  • 02-01-2010, 00:07:41
    #4
    Üyeliği durduruldu
    ismailperim güzel makale eline saglık.ayrıca cakephp bakmanı öneririm. tek tık sistem tamam
  • 02-01-2010, 00:10:36
    #5
    BHCoder adlı üyeden alıntı: mesajı görüntüle
    ismailperim güzel makale eline saglık.ayrıca cakephp bakmanı öneririm. tek tık sistem tamam
    teşekkürler hemen inceliyorum cakephp yi.
  • 02-01-2010, 00:13:43
    #6
    Bence tembellikle alakası yok. Sonuçta programlama yapıyoruz en kullanışlısı,en kolayı, ve en az yorucusu hangisi ise ben onu tercih ediyorum. Senin kodun üç şıkkıda kapsıyor.
  • 02-01-2010, 00:14:28
    #7
    Eline sağlık üstad, güzel olmuş
  • 02-01-2010, 00:18:58
    #8
    aLKaDraZ adlı üyeden alıntı: mesajı görüntüle
    Bence tembellikle alakası yok. Sonuçta programlama yapıyoruz en kullanışlısı,en kolayı, ve en az yorucusu hangisi ise ben onu tercih ediyorum. Senin kodun üç şıkkıda kapsıyor.
    eskiden değişkenleri notepad++ a kopyalar regex kullanarak replace işlemleri ile bir kaç adımda oluştururdum sorguları geçenlerde yeni projemle uğraşırken bir ampul yandı denedim baktım oldu


    Teknonix adlı üyeden alıntı:
    Eline sağlık üstad, güzel olmuş
    Teşekkürler.
  • 02-01-2010, 00:33:22
    #9
    Valla şimdi bende bundan sonrakiler için böle bir şey düşünüyorum. Sayende fazla kasmayacaz artık saol.