#symfony #silex
#symfony #silex
Вопрос:
Я бы хотел, чтобы проект переопределил класс User в Silex 2.0:
SymfonyComponentSecurityCoreUser;
Я абсолютно не понимаю, как.
Моя конечная цель — перегрузить метод:
final class User implements AdvancedUserInterface
{
/**
* {@inheritdoc}
*/
public function getRoles()
{
return unserialize($this->roles[0]); // work (overload)
return $this->roles; // Not work (delete)
}
}
Есть ли у вас какие-либо идеи, как это сделать?
Спасибо!
Комментарии:
1. И в чем проблема переопределения этого класса?
2. Тот же вопрос на GitHub
Ответ №1:
Конечный класс User
определен только для InMemoryUserProvider
.
Чтобы прочитать эту базу данных из Silex, вы должны написать свой собственный код UserProvider
и настроить его.
Вместо расширения User
класса $roles
в конструкторе может быть задано правильное значение.
Если вы использовали пример документации, вам следует заменить эту строку:
return new User($user['username'], $user['password'], explode(',', $user['roles']), true, true, true, true);
Этим:
return new User($user['username'], $user['password'], unserialize($user['roles']), true, true, true, true);
В противном случае лучше всего создать свой собственный класс User.
/**
* User is the user implementation used by the in-memory user provider.
*
* This should not be used for anything else.
*/