Laravel子app文件夹结构

时间:2014-08-06 11:22:37

标签: php laravel-4

我一直在这个主题上来回走动,真的可以使用一些见解。

我正在Laravel中编写API,在Laravel中编写Web App。我一直在这个过程中来回走动,想知道它们是否应该在同一个Laravel安装中,或者它们是否应该单独安装。我可以想到的单独安装的pro和con如下:

Pro的

  1. api代码不会干扰网络代码
  2. 会使用API     数据获取和更新 - >可能有助于未来扩展
  3. 精读的

    1. 多个laravel装置
    2. 无法使用Eloquent(会保存一个 很多工作) - >因为数据来自api。
    3. 最好的方法是什么?

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

2 个答案:

答案 0 :(得分:1)

您可以将代码与命名空间分开。使用composer.json文件和PSR-4,这样您就可以拥有单独的代码库,甚至是控制器和模型。或者您可以在Core命名空间中使用相同的模型。

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

答案 1 :(得分:0)

当然,您至少想要将模型保持在一起吗?

我建议将安装保持在一起并使用路线分开:

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