自从我开始构建我的 DDD/Hexagonal 架构应用程序以来已经有一段时间了,我对与它们相关的大量概念感到不知所措。
尽管当我发现有必要时,我开始略微尝试并尝试应用概念。我发现仍然有很多我不能甚至我不想应用到我的应用程序中,其中一些是:适配器、命令(CQRS?)、事件..
除此之外,我对与六边形体系结构有关的事情有点卡住了。我试图应用外部行为的定义应该依赖于内部,所以基础设施层 -> 应用层 -> 域层
在我的例子中,我在我的应用层中定义了服务作为 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 的一部分)
我的 repo 在 github 中完全可用:Malendar Repository
如何处理这个依赖于数据库输出的服务案例?另外,我跳过哪些概念会很好用?
先谢谢你=D