在这些命令之后
php artisan make:model 'FileName' -mcs
Laravel make命令文件源(Model, Controller, Migration, Seeder, Factory等)
所有基本文件是如何生成的,这些文件来自哪里?
Laravel中所有生成的东西都使用模板
如果你在控制台中运行artisan命令,你可以观察到存在一个叫做stub的部分,这个部分中唯一的命令是php artisan stub:publish
。
如果你运行这个命令,它会在你的应用根目录下生成一个名为stub的新文件夹,里面有一堆扩展名为。stub的文件。
您可以打开这些文件并根据需要修改或自定义它们。从现在开始,这个文件夹将是你的Laravel应用程序读取模板的地方,用于制作工匠通常做的所有东西。
这个模板包含在每个Laravel安装中,并且完全可以选择是否发布它们。事实上,有很多包专门用来制作自定义控制器或模型,就像这个来自Spatie
内部组件Laravel有两个内核
- app/Console/kernel中的第一个
- app/Http/kernel中的第二个
当你运行artisan时,Laravel引导应用程序,并运行内核控制台。这两个内核有不同的用途,实际上它们是作为独立的应用程序运行的。
关于上述文件的具体生成,我指的是不同的控制器、模型、迁移等。所有与模型相关的东西都是由一个类生成的。
class ModelMakeCommand extends GeneratorCommand{ .... }
位于IlluminateFoundationConsole
命名空间下。
你可以检查那个类的代码,看看存根文件是如何被用来生成各种命令的只有与模型相关,但是还有更多,像策略,事件,工作等…
我希望这有助于回答你的问题
这是来自Laravel News的关于这个主题的更多信息
这些文件是从存根文件生成的。以下是任何一个laravel项目的存根目录位置。你可以看看这个
For Model:
供应商/laravel/框架/src/照明/基础/控制台/存根model.stub
:
供应商/laravel/框架/src/照明/基础/控制台/存根供应商/laravel/框架/src/照明/路由/控制台/存根供应商/laravel/框架/src/照明/数据库/控制台/工厂/存根供应商/laravel/框架/src/照明/数据库/控制台/种子/存根
如果你想控制这些存根,你必须应用下面的命令
php artisan stub:publish
此命令将在"stubs"上发布存根文件。项目目录中的文件夹。然后您可以根据您的需要定制。