Laravel文件夹结构

And*_*gan 6 php architecture directory laravel laravel-4

在决定将文件夹放在文件夹中的资源的位置时,我常常发现它有问题app\.

我应该在哪里放置的东西,如model observersvalidatorsform macrosrepositories....目前我这样做

\app
   \models
   \controllers
   \repositories
   \observers
   \interfaces
   \validators 
   \views
Run Code Online (Sandbox Code Playgroud)

虽然我看到有些人做了以下事情:

\app
   \models
   \controllers
   \views
   \YourAppNameHere
      \Services
         \validators
         \...
Run Code Online (Sandbox Code Playgroud)

我不明白\ Acme文件夹背后的原因,它与实际应用程序相同?

car*_*sel 8

掌握Laravel文件夹结构的最佳方法是将app目录视为框架的前端.如果您看一下git存储库,您将看到它们是分开的 - 您可以克隆核心库,您可以单独克隆laravel应用程序.使用它的子文件夹的应用程序仅代表可以使用框架的一种方式.当然,它的设计涉及最佳实践.查看核心框架测试目录 - Laravel开发人员将库视为"无头" - 没有应用程序.对我来说,这是我需要掌握Laravel的一切.

因此,您可以自由地修改现有结构,但请记住,某些更改需要您编写dump-autoload - 主要是因为名称空间.


mik*_*gan 7

总的来说,Laravel可以以任何最适合您的方式构建.有些人更喜欢默认架构,而其他人喜欢基于域的架构.

我目前的两个项目都偏离了这个,使用类似的东西:

/app
  /database
  /controllers
  /bin
  /views
  /config
  /storage
Run Code Online (Sandbox Code Playgroud)

我在服务提供商中保留了很多自定义功能,尽管我在bin/路由和过滤器中都有一些通用帮助程序.

你可以做任何你想做的事情,只要确保你相应地更新你的composer.json,app/start/global.php并确保正确的类是自动加载的.并确保正确命名一切!

下面是我的composer.json和global.php相关部分的示例,仅供参考:

composer.json:

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/database/models",
        "app/database/migrations",
        "app/database/seeds"
    ]
},
Run Code Online (Sandbox Code Playgroud)

app/start/global.php:

ClassLoader::addDirectories(array(

app_path().'/commands',
app_path().'/controllers',
app_path().'/bin',
    app_path().'/database/models',
    app_path().'/database/seeds',

));
require app_path().'/bin/filters.php';
require app_path().'/bin/helpers.php';
require app_path().'/bin/events.php';
Run Code Online (Sandbox Code Playgroud)