0

私は現在、ZendFrameworkとDoctrine2を使用してプロジェクトに取り組んでいますが、これらのツールの両方に本当に満足していますが、データベースデータ、セッションデータ(承認、パラメータ、aclなど。)

私はこの種の実装をよく目にします:

if (User::isConnected())

私にとっての問題は、私のUserクラスがDoctrineによって使用されるエンティティであるということです。問題ではありませんが、ユーザーが複雑な役割や特権を持っている場合は、ビジネスロジックが追加される可能性があります。

ちなみに、理由はわかりませんが(気持ちだけ、間違っているかもしれません)、良いアイデアとは思えないので、デザインの限界があると思います。

現在の私の考えは、UserServiceを使用することです。私はすでに他のエンティティにそのようなレイヤーを使用しようとしていますが、非常に興味深いものに見えます。

のようなものはどうですか:

$service = new UserService($entityManager);
if ($service->isUserConnected($user)) 

「ユーザー」(または許可される可能性のある他の「リソース」)をセッションに格納し、許可を確認するIdentificationServiceなどの別のサービスを使用できる場合があります。

同じことが、次のようなメソッドを使用するAuthorizationServiceにも当てはまります。

$service->isAuthorized($user, $resource, $action)

この種の実装についてフィードバックはありますか?および/または例はありますか?

あなたの考えは何ですか?

ありがとうございました。

4

1 に答える 1

0

このようなものを管理するために、 User エンティティとは別に、ある種のサービスについて考えるのは正しいことです。エンティティは、データ アクセスなどについて知る必要はありません。

Zend_Authを見てください。Doctrine2 で動作するように Zend_Auth_Adapter を作成する必要があります。少しグーグルでこの例が見つかりました。これは有益かもしれません。Zend_Auth は素晴らしくシンプルで、一度ユーザーを認証すると、承認を管理するためにZend_Aclとうまく連携します。

于 2011-05-14T19:32:41.420 に答える