我一直在反复考虑这个问题,确实需要一些洞察力。
我正在写一个API在Laravel和一个Web应用在Laravel。在这个过程中,我一直在想,它们是否应该在同一个Laravel安装中,还是应该在不同的安装中。我能想到的单独安装的利弊如下:
职业的
- api代码不会干扰web代码
- 将使用API数据获取和更新->可能对未来的扩展有好处
反对的
- 多个小型安装
- 无法使用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