Laravel - 正确的工作组织

Laravel - Correct Work Organization

最近看完了一本OOP的书,决定用Laravel框架创建一个项目。

作者在书中建议按类型划分类:DTO、BL和Repositories。 Laravel 让我有点困惑如何组织我的系统。

我一直想做这样的事情:

文件结构:

app
  BL
     RegisterUser.php
  Repositories
     UserRepository.php

然后做例子:

// 用户控制器

public function register($name, $email)
{
    try {
        $this->registerUser->fromWeb($name, $email);
    }

    catch(..) {

    }

     return View::make(....);
}

// 注册用户

public function fromWeb($name, $email) {
    if(...)
        throw new Exception();

    $this->userRepository->createUser($name, $email);

}

// 用户存储库

public function createUser($name, $email) {
    // Insert to DB
}

我不问具体的这个动作,我一般问这样工作是否正确。

另外,我必须在模型中使用DTO吗?如果是这样,它应该如何适应?

我不会说有什么正确的方法,但乍一看,感觉就像一层太多了。

我相信模型将是您的 DTO。如果您需要它们,它们会包括基本的 accessors/mutators,否则 Eloquent 可以很好地处理其余部分。很多人也使用模型进行验证,尽管这取决于您。有一个名为 Ardent 的惊人软件包,如果这听起来不错,它会让您的生活更轻松。对于一般的 Laravel 工作流程,我认为这很有意义。

每个人都不一样,但我通常发现自己倾向于更通用的服务层,我的存储库负责处理所有业务逻辑。简而言之,我使用它们来让我的控制器尽可能轻便。这如何转化为您所阅读的内容,它基本上将业务逻辑和存储库组合成存储库。

然后控制器将严格负责管理服务层(存储库)和视图之间的数据流。