0

DDD/Hexagonal アーキテクチャ アプリケーションの構築を開始してからしばらく経ちましたが、両方に関連する概念の量に圧倒されました。

私は少し行き始めましたが、必要に応じて概念を適用しようとしました。アプリケーションに適用できない、または考えていないものがまだたくさんあることがわかりました。そのうちのいくつかは、アダプター、コマンド (CQRS?)、イベント..

これとは別に、Hexagonal Architecture に関係することに少し行き詰まりました。外部の動作の定義を適用しようとしているのは、内部に依存する必要があるため、インフラストラクチャ層 -> アプリケーション層 -> ドメイン層

私の場合、次の LoginService の例として、アプリケーション層でサービスを定義しました。

class LoginUserService implements ApplicationServiceInterface
{
private $userRepository;
private $session;

public function __construct(UserRepositoryInterface $userRepository, Session $session)
{
    $this->userRepository = $userRepository;
    $this->session = $session;
}

public function execute($request = null)
{
    // TODO: Implement execute() method.
    $userName = $request->get('user');
    $password = $request->get('password');
    $user = $this->userRepository->findByUsername($userName);
    if (!empty($user) && $user->validate($password)) {

        $this->session->start();
        $this->session->set('user', array('id' => $user->getUserId(), 'username' => $user->getName(), 'email' => $user->getEmail()));
        return true;
    } else {
        return false;
    }
}
}

しかし、六角形のアーキテクチャが表す依存関係ステートメントを吹き飛ばしていると確信しています。私のアプリケーション層はインフラストラクチャ層に依存しているため。(この場合、$this->userRepository->findByUsername($userName);アプリケーションの serviceContainer に注入された DoctrineUserRepository の一部です)

私のレポは github で完全に利用できます: Malendar リポジトリ

データベース出力に依存するこの Service ケースをどのように処理しますか? また、使用するのに非常に便利な概念をスキップしますか?

よろしくお願いします=D

4

1 に答える 1