次のようなメソッドを追加して、カスタム UserProvider をオーバーライドするのが正しい方法です。
- 検索 ($UserId)
- findAll()
- 保存($ユーザー)
- 削除($UserId)
と
public function buildObject(array $rowFromDatabase) {
$user = new MyUser();
$user->setId($row["id"]);
$user->setUsername($row["username"]);
$user->setSalt($row["salt"]);
$user->setRole($row["role"]);
$user->setPassword($row["password"]);
return $user;
}
MyUserはUserInterfaceを実装する POJO です
あなたのloadUserByUsernameは
public function loadUserByUsername($username) {
$sql = "SELECT * FROM MyUserTable WHERE username = ?";
$row = $this->getDB()->fetchAssoc($sql, array($username));
if($row) {
return $this->buildDomainObject($row);
}else{
throw new UsernameNotFoundException(sprintf('User "%s" not found.', $username));
}
}
データベースへの接続を制限するには、DAO パターンを使用できます。