我使用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;
}
}
因此,为了注册一个新用户,我以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));
这是个好方法吗?