php function __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');
제휴하지 않습니다 StackOverflow