Я использую 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));
Это хороший способ?