Пользователь класса перегрузки silex

#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.
 */