【问题标题】:Best approach for Laravel 5 core structureLaravel 5 核心结构的最佳方法
【发布时间】:2014-10-09 15:01:31
【问题描述】:

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

以前我做过这样的事情

  • 应用程序
    • Apes(我的自定义课程所在的地方)
    • 型号
    • 控制器

我是否应该尝试对我的类进行分段以适应新的目录结构?例如,现在应用中有一个 Http 文件夹,我应该在该目录中添加相关的自定义类吗?

  • 应用程序
    • http
      • 猿类
        • SomeHttpClass
      • 控制器
      • 中间件
    • 提供者
      • 猿类
        • 我的服务提供者
      • AppServiceProvider.php

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

任何建议表示赞赏。

更新

经过一段时间的修改,我确定了一种适合我的方法(这是一个小应用程序。

  • 应用程序
    • 控制台
    • 处理程序
    • 帮手
    • http
      • 控制器
        • 管理员
        • 公开
      • 中间件
      • 请求
    • 提供者
    • 存储库
      • AbstractDbRepository.php
      • ClientRepositoryInterface.php
      • DbClientRepository.php
      • DbScheduleRepository.php
      • ScheduleRepositoryInterface.php
    • 时间表
      • 例外情况
      • Schedule.php
      • ScheduleCalculator.php
      • ScheduleInputTransformer.php
      • ScheduleTimes.php
    • 特征
    • SimpleModel.php

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

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

【问题讨论】:

标签: php structure laravel-5


【解决方案1】:

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

现实情况是,您可以通过多种不同的方式做到这一点,一切都会好起来的。 Taylor 一直说要按照希望它的行为方式构建应用程序 - 不是因为其他人告诉您这样做。

【讨论】:

    【解决方案2】:

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

    虽然是基于 Laravel 4.x 的,但绝对值得一读。

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

    【讨论】:

      【解决方案3】:

      您甚至不需要坚持放置控制器、视图或模型的标准方式,因为它们中的大多数只需要在 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 模型:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-23
        • 2015-12-03
        • 2018-04-06
        • 1970-01-01
        • 2016-05-19
        相关资源
        最近更新 更多