3

所以 Laravel 5 提出了一个新的文件夹结构,我正在尝试找出管理我的自定义类的最佳方法(记住 PhpSpec 测试)

以前我做过这样的事情

  • 应用程序
    • 猿(我的定制课程在那里举行)
    • 楷模
    • 控制器
    • ETC

使用新结构,我应该尝试分割我的类以适应新的目录结构吗?例如,现在应用程序中有一个 Http 文件夹,我应该将相关的自定义类添加到该目录吗?

  • 应用程序
    • Http
      • 猿类
        • 一些HttpClass
      • 控制器
      • 中间件
    • 提供者
      • 猿类
        • 我的服务提供者
      • AppServiceProvider.php

我知道这可能是个人喜好等问题,但我一直在思考什么是布置全新 L5 项目的最佳实践方法时遇到了一些麻烦。

任何建议表示赞赏。

更新

经过一段时间的修补后,我确定了一种对我来说很好的方法(这是一个小型应用程序。

  • 应用程序
    • 安慰
    • 处理程序
    • 帮手
    • Http
      • 控制器
        • 行政
        • 上市
      • 中间件
      • 要求
    • 提供者
    • 存储库
      • AbstractDbRepository.php
      • ClientRepositoryInterface.php
      • DbClientRepository.php
      • DbScheduleRepository.php
      • ScheduleRepositoryInterface.php
    • 时间表
      • 例外
      • 附表.php
      • 日程计算器.php
      • ScheduleInputTransformer.php
      • ScheduleTimes.php
    • 性状
    • 简单模型.php

我决定如果一个模型相当简单,我就把它留在应用程序的根目录中,但是对于需要更广泛测试的更复杂的模型,我会使用存储库模式。

我刚刚将控制器保留在原始位置,但将它们细分为 admin/public。我们也有可能为此构建一个小型 API,我可能会将与 API 相关的所有内容都放在 app/Api 中

4

3 回答 3

2

在这个阶段,L5 仍在发生巨大的变化。如何做到这一点还没有“最佳方法”,答案会随着时间的推移而改变,直到 L5 真正发布。

现实情况是,您可以通过多种不同的方式进行操作,一切都会好起来的。泰勒总是说要根据你想要的方式构建应用程序——而不是因为其他人告诉你那样做。

于 2014-10-09T23:27:36.187 回答
0

Taylor Otwell 在一篇博文中概述了 Userscapes Snappy 的结构:http: //blog.userscape.com/post/organizing-snappy

虽然它基于 Laravel 4.x,但它当然值得一读。

Laravel.io 的源代码也有一个有趣的域分隔结构: https ://github.com/LaravelIO/laravel.io

于 2014-11-11T01:53:12.553 回答
0

您甚至不需要坚持放置控制器、视图或模型的标准方式,因为它们中的大多数只需要在 App 文件夹中的一个文件中更改一行即可。我在文件中进行了简单的搜索,以查找对我想要更改的目录的引用,并很快找到了以下内容:

默认控制器目录在 app/Providers/RouteServiceProvider.php 中设置:

protected $namespace = 'App\Http\Controllers';

在同一个文件中,您可以更改 routes.php 文件的路径:

public function map(Router $router)
{
    $router->group(['namespace' => $this->namespace], function ($router) {
        require app_path('Http/routes.php');
    });
}

要更改模型的路径,您只需更改引用以在其他文件中使用正确的命名空间。例如,这些文件中引用了 User 模型:

config/auth.php
config/services.php
数据库/工厂/ModelFactory

当然,您需要更改所有移动文件中的命名空间。

于 2015-09-09T16:35:47.580 回答