【问题标题】:Laravel - Correct Work OrganizationLaravel - 正确的工作组织
【发布时间】:2015-02-09 18:21:30
【问题描述】:

最近读完了一本面向对象的书,决定用 Laravel 框架创建一个项目。

在书中作者建议按照类型来划分类:DTOs、BLs 和 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 吗?如果是这样,它应该如何适应?

【问题讨论】:

    标签: php laravel model-view-controller repository


    【解决方案1】:

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

    我相信这些模型将是您的 DTO。如果您需要它们,它们将包括基本的访问器/修改器,否则 Eloquent 在处理其余部分方面做得很好。很多人也使用模型进行验证,尽管这取决于你。有一个很棒的包叫 Ardent,如果这听起来不错的话,它会让你的生活更轻松。对于一般的 Laravel 工作流程,我认为这很有意义。

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

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

    【讨论】:

      猜你喜欢
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2017-08-20
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多