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: php