Laravel子应用程序文件夹结构


Laravel sub app folder structure

我一直在反复考虑这个问题,确实需要一些洞察力。

我正在写一个API在Laravel和一个Web应用在Laravel。在这个过程中,我一直在想,它们是否应该在同一个Laravel安装中,还是应该在不同的安装中。我能想到的单独安装的利弊如下:

职业的

  1. api代码不会干扰web代码
  2. 将使用API数据获取和更新->可能对未来的扩展有好处

反对的

  1. 多个小型安装
  2. 无法使用Eloquent(将保存一个文件)大量的工作)->因为数据来自api。

最好的方法是什么?

另外,真正的问题是,如果我要把它们放在同一个安装上,设置文件夹结构以在单个Laravel安装上运行应用程序的最佳方法是什么?

可以用名称空间分隔代码。使用作曲器。json文件和PSR-4,所以你可以有单独的代码库,甚至控制器和模型。或者您可以在Core命名空间中使用相同的模型。

{
  ...
  "autoload": {
      "psr-4": {
          "Api''": "app/Api",
          "Core''": "app/Core",
          "Web''": "app/Web"
    },
  ...
}

您肯定希望至少将模型保持在一起吧?

我建议将安装放在一起并使用路由分开:

Route::group( array('before'=>array('api'), 'prefix' => 'api' ), function() {
    ...
}
Route::group( array('before'=>array('auth'), 'prefix' => 'webapp' ), function() {
    ...
}

结构是个人偏好,但我将使用:

Controllers
      |------API
      |       |-------MyController.php
      |
      |------WebApp
              |-------MyController.php

然后在控制器中使用命名空间:

<?php
namespace API;
class MyController extends 'APIBaseController {
更新:

如果您想要整个命名空间,那么这样做:

     app
      |
      |------core
      |       |-------Models
      |
      |------api
      |       |-------Controllers
      |
      |------webapp
              |-------Controllers