SuperGlobal

PHP'de POST,GET,SESSION üzerindeki işlemlerde aşağıdakine benzer yöntemler kullanıyordum(kabaca):

 
function SayiKontrol($veri,$deger){
    if (is_numeric($veri)){
        return $veri;
    }else{
        return $deger;
    }
}
 
$ID = 0;
 
if (isset($_GET['ID']))
    $ID = SayiKontrol($_GET['ID'],0);
 

Sayı kontrol fonksiyonunu aradan çıkartırsak 2-3 satırlık kod yazmak gerekiyordu. Bende bu tür işlemleri tek bir fonksiyona sığdırıp bu kalabalıklıktan kurtulmak için aşağıdaki gibi kod geliştirdim:

 
function SuperGlobal(){
    // func_get_arg(0) -> İşlem türü seçimi.
    // func_get_arg(1) -> Alınacak veri anahtarı.
    // func_get_arg(2) -> Sayı kontrolü yapılıp yapılmayacağı durumu.
    // func_get_arg(3) -> Sayı kontrolü yapılacaksa ve sonuç olumsuz ise geri döndürülecek değer.
    $veri = 0;
    // İlk değere göre işlem seçimi yapılıyor.
    switch(func_get_arg(0)){
        case 'get':
            // $_GET kontrolü yapılıyor. Sonuç olumlu ise veri aktarılıyor.
            if (isset($_GET[func_get_arg(1)]))
                $veri = $_GET[func_get_arg(1)];
            break;
        case 'post':
            // $_POST kontrolü yapılıyor. Sonuç olumlu ise veri aktarılıyor.
            if (isset($_POST[func_get_arg(1)]))
                $veri = $_POST[func_get_arg(1)];
            break;
        case 'session_get':
            // $_SESSION kontrolü yapılıyor, sonuç olumlu ise veri aktarılıyor.
            if (isset($_SESSION[func_get_arg(1)]))
                $veri = $_SESSION[func_get_arg(1)];
            break;
        case 'session_set':
            // Değer sessiona aktarılıyor.
            $_SESSION[func_get_arg(1)] = func_get_arg(2);
            $veri = func_get_arg(2);
            break;
        default:
            $veri = 0;
            break;
    }
    if (func_num_args()>2){
        if (func_get_arg(2)==true && is_numeric(func_get_arg(2))==true){
            if (func_num_args()>3){
                $deger = func_get_arg(3);
            }else{
                $deger = 0;
            }
            if (is_numeric($veri)){
                return $veri;
            }else{
                return $deger;
            }
        }else{
            return $veri;
        }
    }else{
        return $veri;
    }
}
 
// Kullanımı
$degisken1 = SuperGlobal('get','veri1');
$degisken2 = SuperGlobal('get','veri2',true);
$degisken3 = SuperGlobal('post','veri3');
$degisken4 = SuperGlobal('session_get','veri4',true);
SuperGlobal('session_set','verianahtari','aktarılacak veri');
 

Tags:

Leave a Reply