Laravel - 正确的工作组织

时间:2015-02-09 18:21:31

标签: php laravel model-view-controller repository

最近我读完了一本OOP书,我决定用Laravel Framework创建一个项目。

在书中,作者建议根据类型划分类:DTO,BL和存储库。 Laravel让我有点困惑如何组织我的系统。

我一直在考虑做这样的事情:

文件结构:

app
  BL
     RegisterUser.php
  Repositories
     UserRepository.php

然后做例如:

// UserController

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

    catch(..) {

    }

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

// RegisterUser

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

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

}

// userRepository

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

我没有要求具体采取这一行动,我一般都会问这样做是否正确。

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

1 个答案:

答案 0 :(得分:1)

我不会说有任何正确的方法,但乍看之下,感觉就像是一层太多。

我相信模特会是你的DTO。如果你需要它们,它们将包括基本的访问者/变异者,否则Eloquent在处理其余的事情方面做得非常好。很多人也会使用模型进行验证,但这取决于您。有一个名为Ardent的惊人包装,如果这听起来像个好主意,它会让你的生活更轻松。对于一般的Laravel工作流程,我认为这很有意义。

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

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