PHP isteği işlemek nasıl

5 Cevap php

is there a class to handle $_REQUEST that makes the life of a php developer easier? I want to handle the client requests easier. I dont want to test with if(is_set($_REQUEST['blabla'])) {makesomthing();} I wish there could be a solution like this.

class rpclike
{
 public function getMember()
 {
  $memberid = $this->inputhandler['memberid'];
  $member = $this->memberclass->getmember($memberid);

   foreach($member as $mem)
   {
    echo $mem->id;
   }
 }

}

$rpc = new rpclike();

sonra ben böyle bir javascript gelen rpclike ararsanız

<a href="#" onclick="GETURL("rpclike.php?getMember&memberid=22")">Get member</a>

Böyle bir şey yapabilirim, hangi sınıf?

5 Cevap

It kökeni usul-tabanlı programlama gibi PHP, gerçekten, bir şekilde bu tür kullanabilmeniz için bir varsayılan sınıf yapısı yoktur.

Bunun için ihtiyacı hissettim eğer böyle bir sınıf oluşturmak için oldukça önemsiz olacaktır. Ancak, gerçekten sadece yükü ekleyerek olurdu. Bunun kolaylık sizin için buna değer ise, o zaman sizin için varlığını denetler işlemek için __get() and __set() yöntemlerini kullanmak olabilir.

Daha kolay bir şekilde istemci isteklerini işlemek için kullanmak istediğiniz aslında muhtemelen genellikle URL'leri ve rota bunları sizin için otomatik yöntemler uygun işlemek bir MVC framework gibi bir şey, hareket etmeliyiz iyi bir göstergedir. Çoğu PHP çerçeveler zaten sizin için yapacak. Işlem genellikle nasıl güzel bir bakış için, sen olabilir see how CodeIgniter does it.

Bu güvenlik endişeleri oluşturduğu gibi $_REQUEST kullanmanız tavsiye edilmez. Sen, $_POST $_GET birini kullanarak, veya $_COOKIE, almak için çalışıyoruz küresel ne istek var bağlı olmalıdır. Yapabileceğiniz en iyi şey aşağıdaki gibi bir şey var olacaktır:

class input {

    public static function get($key, $value = false) {
        return (!empty($_GET[$key])) ? $_GET[$key] : $value;
    }

    public static function post($key, $value = false) {
        return (!empty($_POST[$key])) ? $_POST[$key] : $value;
    }

    public static function cookie($key, $value = false) {
        return (!empty($_COOKIE[$key])) ? $_COOKIE[$key] : $value;
    }

}

Daha sonra gibi sınıfını kullanabilirsiniz:

if (input::post('field', null) != null) {

}

veya

if (input::get('field', false) != false) {

}

Although this still requires testing, you can explicitly set the return values in the event no data was set fveyathe global variable.

Kenara bu işin bariz güvenlik riskleri, bu mümkün olduğunu. Bir MVC sisteminde direksiyon istekleri için kullanılacak ortak bir desen var.

Eğer? Class = Kullanıcı ve yöntem = viewprofile index.php talep Say

$module = new $_GET['class']();
if(!method_exists($module,$_GET['method']))
$module->$eventName();

Öyle düşünmüyorum. Keyfi bir yöntemi çağırmak için güçlü olmak büyük bir güvenlik delik olacaktır.

Do gibi bir şey:

url: /foo/bar?req=getMembers&memberid=22

Sonra yapabilirsiniz:

$request = $_GET['req'];
$request();

Biraz daha az tehlikeli versiyonu:

$req_methods = array(
    getMembers => 'some_function',
    saveMembers => 'another_function',
    sendMessage => 'send_him_an_email'
);
$request = $_GET['req'];
$req_methods[$request]();