Pergunta

Eu estou trabalhando em código de alguém e eles têm um construtor que usa:

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

A minha pergunta é esta: É possível higienizar os dados dentro do construtor? Mesmo usando alguma função simples como strip_tags ()?

Exemplo de utilização:

$qwerty = new qwerty;
qwerty->get['id'];
Foi útil?

Solução

Eu vejo duas maneiras de abordar isso. Uma delas seria apenas usar um loop foreach na contructor para percorrer os parâmetros $ _GET

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

Como alternativa, recuperar os dados através de uma função get e higienizar lá.

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

Outras dicas

Você pode fazer praticamente qualquer coisa que você quer no construtor. Dito isto, isso não significa que você deve. Muitos argumentam que qualquer coisa significativa ou que poderia lançar uma exceção não deve ser em um construtor. De qualquer forma, se você estiver indo para usar essa classe que você poderia fazer algo como isto:

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');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top