В настоящее время я работаю над проектом с Zend Framework и Doctrine 2, я очень доволен обоими этими инструментами, но мне интересно, как работать с этим специальным объектом User, который совместно использует данные базы данных, данные сеанса (авторизация, параметры, acl и т.д..)
Я часто вижу такую реализацию:
if (User::isConnected())
Проблема для меня в том, что мой класс User является объектом, который используется Doctrine, ну, это не проблема, но он может добавить некоторую бизнес-логику, если у моего User есть какая-то сложная роль и/или привилегии.
Кстати, я не знаю почему (просто предчувствие, может быть, неправильное), но это не похоже на хорошую идею, я почти уверен, что у нее есть конструктивные ограничения.
В настоящее время моя идея состоит в том, чтобы использовать UserService, я уже пытаюсь использовать такой слой для другого моего объекта, и это выглядит действительно интересно.
Как насчет чего-то вроде:
$service = new UserService($entityManager);
if ($service->isUserConnected($user))
Это может позволить мне использовать другую службу, например IdentificationService, которая может сохранять «пользователя» (или любой другой «ресурс», который может быть авторизован) в сеансе и проверять авторизацию.
То же самое можно применить к AuthorizationService с помощью такого метода, как:
$service->isAuthorized($user, $resource, $action)
Есть ли у вас какие-либо отзывы о такой реализации? И/или какие-нибудь примеры?
о чем ты думаешь?
Спасибо.