2009-10-28 5 views
1

Je travaille sur le code de quelqu'un et ils ont un constructeur qui utilise:

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

Ma question est la suivante: Est-il possible d'assainir la des données dans le constructeur? Même en utilisant une fonction simple comme strip_tags()?

Exemple d'utilisation:

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

Répondre

1

Je vois deux façons de l'aborder. On serait juste utiliser une boucle foreach dans le contructor à boucle à travers les paramètres $ _GET

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

Vous pouvez également récupérer les données via une fonction get et désinfectez là.

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

Merci! ça a l'air d'avoir marché! – kylex

0

Vous pouvez faire à peu près tout ce que vous voulez dans le constructeur. Cela dit, cela ne signifie pas que vous devriez. Beaucoup diront que tout ce qui est significatif ou qui pourrait déclencher une exception ne devrait pas être dans un constructeur. Quoi qu'il en soit, si vous allez utiliser cette classe, vous pouvez faire quelque chose comme ceci:

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');