确保课程有形式水合:这是一个好方法吗?

时间:2019-04-17 09:01:14

标签: php forms class post

我使用PHP类来管理用户帐户,我想知道我在做什么是否正确。 我直接将$_POST['form']用于水合用户对象。 但是我不想让用户修改某些字段(即Id_useradmin_level,...),所以我在每个setID或setAdmin_level (a boolean called $force)中使用一个参数:

public function __construct(array $donnees = null, $forcer = false)
{
  if($donnees){
    $this->hydrate($donnees,$forcer);
  }
}
public function hydrate(array $donnees, $forcer = false)
{
    foreach($donnees as $champ => $valeur){
      $method = 'set'.ucfirst($champ);
      if(method_exists($this,$method))
      {
        if($forcer){
          try {
            $this->$method($this->securite($valeur), true);
          }catch(Exception $e){
            $this->$method($this->securite($valeur));
          }
        }else {
            $this->$method($this->securite($valeur));
        }
      }
    }
}

以下是“安全”二传手的示例:

    public function setId_user($id_user, $forcer = false)
{
  if(is_numeric($id_user)&&$forcer)
  {
      $this->_id_user = $id_user;
      return true;
  }else {
    $this->addErreur('id_user','User ID incorrect');
    return false;
  }

}

因此,为了注册一个新用户,我以POST的形式添加了一个新的User对象:

$user = new User($_POST[form], false);

并且我需要将$ force bool设置为true,以便根据ID创建新用户或要设置受保护的字段。

$userManager->getUserFromId(new User(['id_user' => 1], true));

$userManager->getUserFromEmail(new User(['email' => "my_email@email.com"], true));

这是个好方法吗?

0 个答案:

没有答案