Проблема разработки пользовательского фреймворка Symfony - PullRequest
1 голос
/ 22 июня 2010

Я ищу совет о том, как решить проблему дизайна, с которой я столкнулся. В настоящее время я использую платформу Symfony, поэтому буду использовать имена классов Symfony.

Когда пользователь становится «аутентифицированным» или его «учетные данные» изменяются в пользовательском классе Symfony, возрождается () для используемого в настоящее время класса хранения. Класс store расширяет sfStorage.

Теперь, когда эта команда регенерировать () запущена, нам нужно выполнить некоторую бизнес-логику. Ниже приведены варианты, которые я придумал:

  • Измените три функции, которые addCredential, removeCredential, setAuthenticated, и попросите их отправить событие (setAuthenticated уже выполняет), чтобы мы знали, как выполнять нашу бизнес-логику.

  • Вторым вариантом будет расширение класса sfSessionStorage и указание ему генерировать событие при каждой регенерации. Проблема с этим заключается в том, что sfUser запрашивает интерфейс sfStorage. Если мы не изменим sfStorage, то если кто-то пройдет какой-либо класс, расширяющий sfStorage, который не знает, как добавить событие, это не сработает.

  • Третий вариант будет вторым, но мы все равно расширим объект пользователя, чтобы сказать, что нам требуется интерфейс пользовательского абстрактного класса sfStorage, который отправляет уведомление о регенерации. Тогда мы бы точно знали, что любой проходящий класс будет следовать этому методу уведомления.

У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 22 июня 2010

Я бы выбрал второй вариант и расширил класс sfSessionStorage, а затем использовал класс, вставив его в factories.yml.

Это не должно вызывать проблем с sfUser, поскольку ваш пользовательский класс хранения будет расширяться с sfStorage по прокси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...