php function __construct () вопрос, включающий this-> get = $ _GET - PullRequest
1 голос
/ 28 октября 2009

Я работаю над чьим-то кодом, и у них есть конструктор, который использует:

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

У меня такой вопрос: возможно ли очистить данные в конструкторе? Даже используя простую функцию, например strip_tags ()?

Пример использования:

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

Ответы [ 2 ]

1 голос
/ 28 октября 2009

Я вижу два способа приблизиться к этому. Можно было бы просто использовать цикл foreach в конструкторе для циклического перебора параметров $ _GET

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

Кроме того, можно получить данные с помощью функции get и выполнить там очистку.

function getParams($key)
{
  return sanitize($_GET[$key]);
}
0 голосов
/ 28 октября 2009

В конструкторе вы можете делать практически все, что захотите. Сказав это, это не значит, что вы должны. Многие утверждают, что в конструкторе не должно быть ничего значимого или того, что может вызвать исключение. В любом случае, если вы собираетесь использовать этот класс, вы можете сделать что-то вроде этого:

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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...