-1

我希望我遵循正确的程序,这个问题就足够了。我试图搜索无济于事,所以我希望我能在这里得到答案。

我刚刚开始进入 Laravel。我注意到一种称为 DDD 的新设计方法,我想尽我所能尝试并实现它。

假设我有一个位于模型文件夹中的用户包。使用主类访问验证用户等功能是否是一种好习惯?这个类将位于包的主目录中,可以说并将被称为用户。本质上,这将封装存储库、实体和服务。这样,需要这些数据的控制器就不会被一堆调用污染。

例如:要验证用户登录,我们调用:

 User->validateUserLogin($username, $password);

然后在里面User->validateUserLogin:

public function validateUserLogin($username, $password)
{
    $user_login = new User_Login_Entity($username, $password);
    // Assume the validation returns a valid User object on successful validation
    $User = User_Validation_Service->ValidateUserCredentials($user_login)
}

我要解决这个问题了吗?我知道 SRP 是其中的关键,我不确定我是否足够好/或根本没有遵循它。基本上我的想法是:从控制器到模型工作的一个入口点。这与让控制器调用存储库、服务和实体相反。

4

2 回答 2

3

您快到了。您应该提供从控制器 POV 到使用您的“模型”的“用例”的访问权限。执行此操作的代码通常称为应用程序服务。它们位于您的模型和控制器之间。现在,请注意当我说“用例”时,我真正的意思是改变应用程序/系统/服务/whateveryourebuilding 状态的操作。这不包括查询或其他间接属于查询的问题。这些最好在数据存储上使用非常薄的层进行建模。但是……应用程序服务可以执行查询才能完成,这没有错。它不是黑白的,只是不同深浅的灰色。从控制器的角度来看,在操作和查询之间做出非常明确的区分是值得的,

于 2012-09-30T09:37:58.847 回答
-2
 $User = User_Validation_Service->ValidateUserCredentials($user_login)
          here is the problem ----------------------------------------^

;声明后应该有

应该

  $User = User_Validation_Service->ValidateUserCredentials($user_login);
于 2012-09-30T04:55:54.880 回答