Laravel 5核心结构的最佳方法

时间:2014-10-09 15:01:31

标签: php structure laravel-5

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

以前我做过类似的事情

  • 应用
    • 猿(我的自定义课程被举行)
    • 模型
    • 控制器

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

  • 应用
    • 的Http
        • SomeHttpClass
      • 控制器
      • 中间件
    • 提供者
        • MyServiceProvider
      • AppServiceProvider.php

我知道这可能是个人偏好的问题,等等,但我一直在解决最佳实践方法是为了制定一个全新的L5项目。

任何建议表示赞赏。

更新

经过一段时间的修修补补,我已经找到了适合我的方法(这是一个很小的应用程序。

  • 应用
    • 控制台
    • 处理程序
    • 助手
    • 的Http
      • 控制器
        • 管理
        • 公共
      • 中间件
    • 提供商
    • 存储库
      • AbstractDbRepository.php
      • ClientRepositoryInterface.php
      • DbClientRepository.php
      • DbScheduleRepository.php
      • ScheduleRepositoryInterface.php
    • 时刻表
      • 例外
      • Schedule.php
      • ScheduleCalculator.php
      • ScheduleInputTransformer.php
      • ScheduleTimes.php
    • 性状
    • SimpleModel.php

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

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

3 个答案:

答案 0 :(得分:2)

在这个阶段,L5仍在进行大规模的改变。没有最好的方法'还没怎么做,答案会随着时间的推移而改变,直到L5实际发布。

现实情况是,你可以通过多种不同方式做到这一点,一切都会好起来的。泰勒总是说要构建一个应用程序,以确定想要它的行为 - 而不是因为别人告诉你这样做。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分: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');
    });
}

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

配置/ auth.php
配置/ services.php
数据库/工厂/ ModelFactory

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