Laravel软件包中的模型放在哪里?

Laravel软件包中的模型放在哪里?,laravel,directory-structure,Laravel,Directory Structure,我目前正在关注文档,它使用workbench工具创建一个标准包树,由controller、config、视图等文件夹组成。基本上,大多数文件夹你会得到一个标准的Laravel应用程序树 然而,我有几个问题: 为什么这里没有模型文件夹?(尽管测试和命令也是如此) 我应该自己创建文件夹并将其添加到composer.json自动加载类映射中吗 哪些类应该存在于src//中?我注意到这里会自动创建一个ServiceProvider,但我可以想象大多数其他文件都存在于标准包目录中 Wockbench只是

我目前正在关注文档,它使用
workbench
工具创建一个标准包树,由
controller
config
视图
等文件夹组成。基本上,大多数文件夹你会得到一个标准的Laravel应用程序树

然而,我有几个问题:

  • 为什么这里没有
    模型
    文件夹?(尽管
    测试
    命令
    也是如此)
  • 我应该自己创建文件夹并将其添加到composer.json自动加载类映射中吗
  • 哪些类应该存在于
    src//
    中?我注意到这里会自动创建一个ServiceProvider,但我可以想象大多数其他文件都存在于标准包目录中

Wockbench只是一个用于创建其他工具的工具,通过CLI触发。工作台是一个非常抽象的概念

模型文件夹不存在,只是因为您不需要在每个新包中都包含模型。例如,如果您正在创建中间件包或您自己的筛选器包

每个新类都可以根据其用途和职责添加到包中。这可以通过多种方式实现

足以进入每个包的类包括:

Package Service Provider
Facade
Basic Class 

但它不是一个黑匣子。例如,考虑请求类——它在应用程序生命周期中很早就被绑定,所以不需要提供程序。

但是类似地,在每个包中不需要控制器。也不是观点。那么,为什么现在有这些模型而没有呢?你是对的,这可能只是拉威尔创造者个人选择的问题。工作台只是一个起点。当然,您将创建特定于您的包的类。或者链接到其他路径。我喜欢将workbench想象成一个用于创建其他东西的引导程序,因此它非常抽象和开放。我认为Taylor的总体想法是,模型太过约束一个想法。控制器需要做控制器所做的事情,但大多数其他类在如何处理应用程序的业务逻辑方面更为抽象。可以肯定地说,任何扩展了
Eloquent\Model
的东西都是非常特殊的东西,因此为什么不设置一个文件夹,类似地,Laravel的基本安装甚至提供了一个
models
目录,那么为什么不设置一个包呢?你得问问泰勒。但是如果你读了他的书,你会发现他告诉你在开始编码之前删除你的应用程序的
模型
目录。