Обеспечить класс для гидратации формы: это хороший способ? - PullRequest
0 голосов
/ 17 апреля 2019

Я использую PHP-классы для управления учетными записями пользователей, и мне интересно, правильно ли я делаю. Я непосредственно использую $_POST['form'] для гидратных объектов пользователя. Но есть поле, которое я не хочу, чтобы пользователь изменял (т.е.: Id_user, admin_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;
  }

}

Итак, чтобы зарегистрировать нового пользователя, я гидратирую новый объект User с помощью формы POST:

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

И мне нужно установить для $ force bool значение true для создания нового пользователя из идентификатора или, если я хочу установить защищенное поле.

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

Или

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

Это хороший способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...