php функция __construct() вопрос, связанный с этим-> get = $_GET
-
06-07-2019 - |
Вопрос
Я работаю над чьим-то кодом, и у них есть конструктор, который использует:
class qwerty {
public function __construct(){
// some other code
$this->get = $_GET;
}
}
Мой вопрос заключается в следующем:Можно ли очистить данные внутри конструктора?Даже используя какую-нибудь простую функцию вроде strip_tags()?
Пример использования:
$qwerty = new qwerty;
qwerty->get['id'];
Решение
Я вижу два подхода к этому.Одним из них было бы просто использовать цикл foreach в конструкторе для перебора параметров $_GET
foreach($_GET AS $key => $val)
{
$_GET[$key] = sanitize($val);
}
В качестве альтернативы, извлеките данные с помощью функции get и очистите их там.
function getParams($key)
{
return sanitize($_GET[$key]);
}
Другие советы
В конструкторе вы можете делать практически все, что захотите.Сказав это, это не значит, что вы должны это делать.Многие возразили бы, что ничего значимого или способного вызвать исключение не должно быть в конструкторе.В любом случае, если вы собираетесь использовать этот класс, вы могли бы сделать что-то вроде этого:
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');