php function __ içeren construct () soru bu-> get = $ _GET

2 Cevap php

Birinin kod üzerinde çalışıyorum ve onlar kullanan bir kurucu var:

class qwerty {
public function __construct(){
// some other code
    $this->get = $_GET;
}
}

My question is this: Is it possible to sanitize the data within the constructor? Even using some simple function like strip_tags()?

Kullanım örneği:

$qwerty = new qwerty;
qwerty->get['id'];

2 Cevap

Ben bu yaklaşım için iki yol görüyorum. Bir sadece $ _GET parametreleri döngü contructor bir foreach döngüsü kullanmak olacaktır

foreach($_GET AS $key => $val)
{
  $_GET[$key] = sanitize($val);
}

Alternatif olarak, bir get fonksiyonu üzerinden veri almak ve orada sterilize.

function getParams($key)
{
  return sanitize($_GET[$key]);
}

Eğer yapıcısı istediğiniz hemen hemen her şeyi yapabilir. Bunu söyledikten sonra, bunu gerektiği anlamına gelmez. Çok anlamlı ya da bir özel durum şey bir kurucu olması gerektiğini iddia ediyorum. Her neyse, bu sınıfı kullanmak için gidiyoruz Eğer böyle bir şey yapabilirsiniz:

class qwerty
{
    private $get;

    public function __construct($params)
    {
       $this->get = $this->sanitize($params);
    }

    public function sanitize($params)
    {
        $sanitized = $params;

        foreach ($sanitized as $key => $value) {
            $sanitized[$key] = strip_tags($value);
        }

        return $sanitized;
    }

    public function getField($field)
    {
        if (array_key_exists($field,$this->get)) {
            return $this->get[$field];
        } else {
            return null;
        }
    }
}

$q = new qwerty($_GET);
$q->getField('id');